IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

[WD14] Procédure stockée


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut [WD14] Procédure stockée
    Bonjour,

    J'ai besoin de vos lumières...car ceci me dépasse largement...
    J'ai besoin d'accéder à un BDD d'une société...mais elle ne me laisse qu'y accéder par Stored Procedures...

    Comment faire...j'ai besoin d'aide et d'explications...
    La société m'a envoyé un exemple écrit en C#...

    Je dois apparement lancé une sorte de requête paramétré etc...et comment récuperer le résultat?

    BAV

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    public partial class Form1 : Form
    {
    private OdbcConnection myConnection;
    private OdbcCommand myCommand;
     
    public Form1()
    {
        InitializeComponent();
        //
        myConnection = new OdbcConnection();
        myCommand = new OdbcCommand();
        //
        myConnection.ConnectionString = "DSN=C2MEXT01;UID=GZAEXTUSR01;PWD=EXTUSR";
        myCommand.Connection = myConnection;
    }
     
    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            myConnection.Open();
            //
            myCommand.CommandType = CommandType.StoredProcedure;
            //myCommand.CommandText = "CALL C2MV5_SA.gva_odbc_PatientAdminData_O";
            myCommand.CommandText = "{CALL C2MV5_SA.gva_odbc_PatientAdminData_O(?,?)}";
            //
            OdbcParameter param1 = new OdbcParameter();
            param1.ParameterName = "ContactNr";
            param1.OdbcType = OdbcType.VarChar;
            param1.Size = 16;
            param1.Direction = ParameterDirection.Input;
            param1.Value = "9361429";
            //
            OdbcParameter param2 = new OdbcParameter();
            param2.ParameterName = "PatName";
            param2.OdbcType = OdbcType.VarChar;
            param2.Size = 128;
            param2.Direction = ParameterDirection.Output;
            //
            myCommand.Parameters.Add(param1);
            myCommand.Parameters.Add(param2);
            //
            myCommand.ExecuteNonQuery();                
            //                
            textBox1.Text = param2.Value.ToString();                
           //
            myConnection.Close();
        }
        catch (Exception e1)
        {
            MessageBox.Show("exception : " + e1.Message);
            if (myConnection.State == ConnectionState.Open)
            {
                myConnection.Close();
            }
        }
    }
    }

  2. #2
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Je suis pas un expert mais HExécuteProcédure me semble prometteuse sinon il y a une syntaxe avec HExécuteRequêteSQL.
    «Un problème bien défini est un problème à moitié résolu.»

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    merci mais cela ne m'aide pas vraiment...

  4. #4
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    c'est de l'objet pour de l'ODBC, donc tous les paramètres sont décrits "à la main"
    Avec WinDev c'est lui qui se charge de ces déclarations. Pour moi tu ne devrais pas rencontrer trèops de difficulté avec les fonctions ODBC fournies.
    Emmanuel Lecoester
    => joomla addict.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Bon...

    J'ai des connaisances basics de SQL et SELECT etc... mais là

    Qu'est qu'une stored procedure à la base?
    Comment l'appeler?
    Comment l'exécuter?
    Comment récuperer les données?

  6. #6
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Qu'est qu'une stored procedure à la base?
    Une procédure présente sur le serveur et qui permet de faire des manipulations plus complexe qu'avec du sql ou qui permet de cacher la structure de la base de données.
    Comment l'appeler?
    HExécuteProcédure ou HExécuteRequêteSQL
    Comment l'exécuter?
    Même chose.
    Comment récuperer les données?
    HExécuteRequêteSQL rempli une source de données et HExécuteProcédure retourne une valeur.

    La page de code en vb ne devrait pas te prendre plus de 3 ou 4 lignes en Windev.
    «Un problème bien défini est un problème à moitié résolu.»

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Est-ce que pourais demander à l'un de vous de me traduire justement cette exemple ? Pour avoir un template de travail...

    BAV et déjà super pour les réponses...

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Est-ce que ce serait simple comme ainsi ou je me trompe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQLConnecte("C2MEXT01", "GZAEXTUSR01", "EXTUSR", "", "ODBC")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLExec("CALL C2MV5_SA.gva_odbc_PatientAdminData_O(?,?)","request")
    Mais comment passer le input ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OdbcParameter param1 = new OdbcParameter();         param1.ParameterName = "ContactNr";         param1.OdbcType = OdbcType.VarChar;         param1.Size = 16;         param1.Direction = ParameterDirection.Input;         param1.Value = "9361429";
    Le output se lirait par SQLpremier ?

    BAV

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 24
    Points
    24
    Par défaut
    beaucoup plus simple que ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SI SQLExec("CALL C2MV5_SA.gva_odbc_PatientAdminData_O('9361429')","req1") ALORS
      SQLPremier("req1")
      Info(SQLCol("req1",1))
      ...
    FIN
    SQLFerme("req1")
    Essaie de remplacer CALL par EXEC ou EXECUTE sinon...
    Il se peut qu'il n'y ait pas de parentheses aussi...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    la connexion est ok mais le call ne fonctionne pas, meme en utilasant les variantes... des idees?

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    J'ai reçu les codes d'erreurs de mon client chez qui tourne la procédure stockée:

    pour : CALL C2MV5_SA.gva_odbc_PatientAdminData_O('9361429')
    erreur: S1000 ORA-06553-PLS-306 - wrong number or types of arguments

    pour d'autre versions il y a aussi les erreurs :
    CALL C2MV5_SA.gva_odbc_PatientAdminData_O('9361429','')
    erreur : 07001-ORA-06577 - output parameter not a bind variable

    CALL C2MV5_SA.gva_odbc_PatientAdminData_O('9361429',?)
    erreur : 07001-ORA-01008 - not all variables bound

    Pourriez-vous m'aider ?

    BAV

  12. #12
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    9361429 c'est un nombre ou une chaîne? Si c'est un nombre peut être essayer sans les ''.
    «Un problème bien défini est un problème à moitié résolu.»

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    C'est un nombre...mais je pense que mon client a essayé sans et cela donne aussi une erreur...

    Le problème est plus à chercher dans le OUT(PUT) je pense ? Mais comment ?

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  2. [WD14] Erreur lors d'une mise à jour de procédure stocké
    Par klbsjpolp dans le forum HyperFileSQL
    Réponses: 0
    Dernier message: 16/07/2009, 18h45
  3. [Pervasive SQL ] procédure stockée
    Par magellan dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 25/10/2002, 13h17
  4. Explication procédure stockée
    Par underworld dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2002, 10h51
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo