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

Bases de données Delphi Discussion :

procédure stockée + Oracle


Sujet :

Bases de données Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Juin 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 177
    Points : 223
    Points
    223
    Par défaut procédure stockée + Oracle
    Bonjour,

    j'utilise Oracle 8i, Delphi7 et les composants DbExpress avec le driver Oracle.

    J'ai crée un package sous Oracle qui est le suivant
    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
     
    CREATE OR REPLACE PACKAGE mmarcte.TESTPATRICK IS
      --
      TYPE cur_adhe IS REF CURSOR ;
      --
      PROCEDURE SelectListeAdhesion ( ai_s_numadhe   IN     VARCHAR2,
                                   ai_s_nomadhe    IN     VARCHAR2,
                                   ai_s_codintadhe    IN     VARCHAR2,
                                   ai_s_souscadhe    IN     VARCHAR2,
    			       aio_cur_adhe	   IN OUT cur_adhe ) ;
      --
    END ;
    /
     
    PROMPT CREATE OR REPLACE PACKAGE BODY mmarcte.testpatrick
     
    CREATE OR REPLACE PACKAGE BODY mmarcte.TESTPATRICK IS
      --
      PROCEDURE SelectListeAdhesion ( ai_s_numadhe   IN     VARCHAR2,
                                   ai_s_nomadhe    IN     VARCHAR2,
                                   ai_s_codintadhe    IN     VARCHAR2,
                                   ai_s_souscadhe    IN     VARCHAR2,
    			       aio_cur_adhe	   IN OUT cur_adhe )
      IS
      --
      BEGIN
    	    OPEN aio_cur_adhe FOR SELECT adhe_cod_prod, adhe_no_adhes, adhe_interne, adhe_nomprenom, adhe_cod_etat, adhe_no_bull
    			         FROM adhesions
            		         ORDER BY adhe_no_adhes ASC ;
      END SelectListeAdhesion ;
      --
    END ;
    Je souhaite afficher le résultat du Select dans un DbGrid. J'ai donc mis un tsqlconnection, un tsqlstoredproc, j'ai paramétré mon tstoredproc
    Jusque là pas de problème

    Je l'appele comme suit dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      with DmBoss.SQLStoredProc1 do
      begin
        Active                                := False;
        Params.ParamByName ('ai_s_souscadhe').AsString       := '';
        Params.ParamByName ('ai_s_codintadhe').AsString    := '';
        Params.ParamByName ('ai_s_nomadhe').AsString       := '';
        Params.ParamByName ('ai_s_numadhe').AsString    := '';
    //    Params.ParamValues ['aio_cur_adhe']    := '';
        Active                                := True;
      end;
    Et lorsque j'exécute j'ai le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    PLS-00306 : nombres ou types d'arguments erronés dans l'appel à SELECTLISTEADHESION
    ORA-06550 : Line1, column 7
    PL/SQL : statement ignored'
    A priori ma procédure stockée est OK mais j'arrive pas à l'utiliser dans Delphi

    Je sais qu'avec Sql Server j'enlevait le Result des PS qui posait souci mais là cela ne fonctionne pas

    Pouvait m'aider

    Merci[/quote]

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    pourquoi places-tu en commentaire le paramétre aio_cur_adhe IN OUT ... ?
    Au vue de ta déclaration, le parseur Oracle attend 5 paramètres, ni moins ni plus.

  3. #3
    Membre actif
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Juin 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 177
    Points : 223
    Points
    223
    Par défaut
    En fait,
    j'avais enlevé le commentaire mais cela faisait pareil.

    En gros, je souhaiterais savoir comment récupérer dans Delphi une procédure stockée Oracle qui a des paramètres d'entrée et un curseur en sortie.

    Le but est d'afficher des lignes d'une table dans une dbgrid.
    Ou est-ce moi qui n'utilise pas correctement les Procédures stockées et qu'il faudrait mieux utiliser les vues pour faire cela.

    Merci

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BONNEFOI Patrick
    Ou est-ce moi qui n'utilise pas correctement
    Je ne pense pas, il faut juste trouver la bonne syntaxe que je ne connais d'ailleurs pas .
    Quel est le type de de la variable aio_cur_adhe ?
    L'unité DBXpress contient le type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fldCURSOR          = 17;              { For Oracle Cursor type }

  5. #5
    Membre actif
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Juin 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 177
    Points : 223
    Points
    223
    Par défaut
    Le type est bien ftCursor.

    Par contre, j'ai contourné le problème en encapsulant la procédure stockée dans une requête comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    begin
    Testpatrick.SelectListeAdhesion (:pNum, :pNom, :pCode, :pSous, :pCur)
    end;
    mais je cherche toujours la solution

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/10/2007, 18h40
  2. [ADO]Procédure stocké Oracle
    Par chalem dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/04/2007, 20h21
  3. Procédures stockées ORACLE 10g - JAVA 1.6
    Par poussinette0712 dans le forum JDBC
    Réponses: 2
    Dernier message: 27/03/2007, 00h49
  4. procédure stockée Oracle depuis VB.net
    Par marcusien dans le forum SQL
    Réponses: 18
    Dernier message: 09/03/2007, 20h53
  5. procédure stockée Oracle dans delphi 6
    Par UPNE387 dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/05/2004, 09h47

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