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 :

[D2009] Passer des paramètres à une procédure stockée Oracle avec DBExpress


Sujet :

Bases de données Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut [D2009] Passer des paramètres à une procédure stockée Oracle avec DBExpress
    Je suis en train de tester Delphi 2009, en vue d'une migration depuis Delphi 6.
    Jusqu'à présent, j'utilisais le BDE. Je profite de ce changement, pour passer à DBExpress.

    Mon problème :
    Comment passer des paramètres à une procédure stockée Oracle avec DBExpress ?

    Voici comment je m'y prend :
    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
     
       _DBXTransaction: TDBXTransaction;
     
    ...
     
       SQLConnection.Open;
     
    ...
     
       with StoredProcAjoutContenant do
       begin
          _DBXTransaction := SQLConnection.BeginTransaction;
          Params.ParamByName('NUMEMPLACEMENT').Value := EditC_AjoutEmplacement.Text;
          Params.ParamByName('IDTypeCont').Value := EditC_AjoutType.Text;
          Params.ParamByName('IDDescCont').Value := EditC_AjoutDesc.Text;
          Params.ParamByName('RacineMonoPdt').Value := EditC_AjoutRacineMonoPdt.Text;
          Params.ParamByName('FinitMonoPdt').Value := EditC_AjoutFinitMonoPdt.Text;
          Params.ParamByName('TypePourQui').Value := EditC_AjoutTypePourQui.Text;
          Params.ParamByName('NumPourQui').Value := EditC_AjoutNumPourQui.Text;
          Params.ParamByName('IDMontage').Value := EditC_AjoutIDMontage.Text;
          Params.ParamByName('Ope').Value := EditC_AjoutOpe.Text;
          Params.ParamByName('Supprime').Value := EditC_AjoutSuppr.Text;
     
          try
             ExecProc;      // <-- ERREUR ICI !
     
             SQLConnection.CommitFreeAndNil(_DBXTransaction);
          except
             on E: Exception do
             begin
                SQLConnection.RollbackIncompleteFreeAndNil(_DBXTransaction);
                MessageDlg(E.Message, mtError, [mbOK], 0);
             end;
          end;
    C'est la transcription d'un code fonctionnant sans problème avec le BDE.
    Et voici ce que j'obtiens sur le ExecProc :
    ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: erreur de conversion des caractères en chiffres
    ORA-06512: à ligne 1
    Y a t'il quelque chose que j'oublie ?

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  2. #2
    Inactif  
    Inscrit en
    Novembre 2008
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 255
    Points : 264
    Points
    264
    Par défaut
    bonjour

    tes parametres sont tous des "ftString" ?

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Aquaa Voir le message
    bonjour

    tes parametres sont tous des "ftString" ?
    Non, j'ai des nombres, aussi.
    Voici la répartition :
    'NUMEMPLACEMENT' - ftString
    'IDTypeCont' - ftFMTBcd
    'IDDescCont' - ftFMTBcd
    'RacineMonoPdt' - ftString
    'FinitMonoPdt' - ftString
    'TypePourQui' - ftFMTBcd
    'NumPourQui' - ftFMTBcd
    'IDMontage' - ftFMTBcd
    'Ope' - ftString
    'Supprime' - ftFMTBcd
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Inactif  
    Inscrit en
    Novembre 2008
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 255
    Points : 264
    Points
    264
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
          Params.ParamByName('NUMEMPLACEMENT').Value := EditC_AjoutEmplacement.Text;
          Params.ParamByName('IDTypeCont').Value := EditC_AjoutType.Text;
          Params.ParamByName('IDDescCont').Value := EditC_AjoutDesc.Text;
          Params.ParamByName('RacineMonoPdt').Value := EditC_AjoutRacineMonoPdt.Text;
          Params.ParamByName('FinitMonoPdt').Value := EditC_AjoutFinitMonoPdt.Text;
          Params.ParamByName('TypePourQui').Value := EditC_AjoutTypePourQui.Text;
          Params.ParamByName('NumPourQui').Value := EditC_AjoutNumPourQui.Text;
          Params.ParamByName('IDMontage').Value := EditC_AjoutIDMontage.Text;
          Params.ParamByName('Ope').Value := EditC_AjoutOpe.Text;
          Params.ParamByName('Supprime').Value := EditC_AjoutSuppr.Text;
    il faudra convertir les types en Bcd je pense

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Params.ParamByName('IDTypeCont').Value := StrToBcd(EditC_AjoutType.Text);
    .

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 177
    Points : 130
    Points
    130
    Par défaut
    Params.ParamByName('IDDescCont').Value := StrToIntDef(EditC_AjoutDesc.Text,0);
    Tu essayes de mettre une chaine dans un entier c'est normal que ça marche pas

  6. #6
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Aquaa Voir le message
    il faudra convertir les types en Bcd je pense

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Params.ParamByName('IDTypeCont').Value := StrToBcd(EditC_AjoutType.Text);
    .
    J'y avais déjà pensé.
    Mais le compilateur l'interdit :
    Types incompatibles : 'variant' et 'tbcd'
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  7. #7
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Arsenic68 Voir le message
    Tu essayes de mettre une chaine dans un entier c'est normal que ça marche pas
    Vu que c'est un variant, je pensais qu'il pourrait se débrouiller, mais apparement non.

    J'ai testé de convertir en entier, mais j'obtiens encore :
    ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: erreur de conversion des caractères en chiffres
    ORA-06512: à ligne 1
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Vu que les champs attendent du BCD et qu'à la saisie ce soit aussi des réel, StrToInt ne peut pas fonctionner. Pourquoi ne pas utiliser un StrToFloat plutôt ?
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  9. #9
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Vu que les champs attendent du BCD et qu'à la saisie ce soit aussi des réel, StrToInt ne peut pas fonctionner. Pourquoi ne pas utiliser un StrToFloat plutôt ?
    Bin, non ...
    Ca donne la même erreur.



    C'est DBExpress qui est bugué, ou il y a un truc que j'oublie ?
    C'est dommage de perdre du temps sur un truc pareil !


    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Dans cette situation mieux procéder par ordre. Déjà tu peux faire un test en ne passant à la PS que les vrais paramètres texte (passer NULL pour les autres) et voir si déjà cela passe.

    Ensuite essayer les autres paramètres BCD un par un jusqu'à trouver le coupable, ne pas s'arrêter au premier (si ce dernier plante) pour savoir s'il s'agit d'un problème général sur les paramètres BCD ou bien que d'un seul paramètre en particulier.

    Enfin est-ce que les paramètres sont crées en mode conception ? Si c'est le cas peut-être sont-ils mal typés, le format BCD étant assez strict. Une autre piste à vérifier.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  11. #11
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Dans cette situation mieux procéder par ordre. Déjà tu peux faire un test en ne passant à la PS que les vrais paramètres texte (passer NULL pour les autres) et voir si déjà cela passe.
    Là, l'appel à ma procédure fonctionne bien (bon, elle me génère une erreur après, mais c'est une erreur PL/SQL à moi, parce que les paramètres numériques ne sont pas renseignés).

    Citation Envoyé par Aka Guymelef Voir le message
    Ensuite essayer les autres paramètres BCD un par un jusqu'à trouver le coupable, ne pas s'arrêter au premier (si ce dernier plante) pour savoir s'il s'agit d'un problème général sur les paramètres BCD ou bien que d'un seul paramètre en particulier.
    Ils posent tous problème, et génèrent la même erreur.

    Citation Envoyé par Aka Guymelef Voir le message
    Enfin est-ce que les paramètres sont crées en mode conception ? Si c'est le cas peut-être sont-ils mal typés, le format BCD étant assez strict. Une autre piste à vérifier.
    Oui, en conception.
    J'ai essayé de bidouiller les types, mais ça ne fonctionne pas mieux. Et, j'ai lu dans l'aide que c'était fortement déconseillé.

    Je sèche, là ...

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  12. #12
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Je n'utilise pas de procédures stockées mais est-ce qu'un SQLMonitor ne pourrait pas te donner une idée de ce qui est transmis au serveur? (étant donné que c'est une erreur Oracle qui est remontée).

    J'utilise ça pour logguer:
    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
     
    procedure TMonDM.SQLMonitorLogTrace(Sender: TObject; CBInfo: pSQLTRACEDesc);
    var
      Ficher : TextFile;
      i : Integer;
    begin
      with Sender as TSQLMonitor do
      begin
          AssignFile(Ficher, FileName);
          if not FileExists(FileName) then
            Rewrite( Ficher)
          else
            Append(Ficher);
     
          // parcours des requêtes enregistrées apr l'objet
          for i := 0 to TraceList.Count -1 do
             WriteLn(Ficher,DateTimeToStr(Now) + sLineBreak + Tracelist[i]);
     
          // reset des requetes enregistrées dans l'objet
          TraceList.Clear; { efface la liste }
    end;
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  13. #13
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Linkin Voir le message
    Je n'utilise pas de procédures stockées mais est-ce qu'un SQLMonitor ne pourrait pas te donner une idée de ce qui est transmis au serveur? (étant donné que c'est une erreur Oracle qui est remontée).
    J'obtiens ça, mais c'est pas très parlant :
    OCI 8 - OCIHandleAlloc
    OCI 8 - OCIHandleAlloc
    OCI 8 - OCIHandleAlloc
    OCI 8 - OCIHandleAlloc
    SELECT NULL, OWNER, OBJECT_NAME, ARGUMENT_NAME, CASE WHEN POSITION=0 THEN 'RESULT' WHEN IN_OUT='IN/OUT' THEN 'INOUT' ELSE IN_OUT END, DATA_TYPE, NULL, NULL, POSITION, 1 FROM ALL_ARGUMENTS WHERE PACKAGE_NAME IS NULL AND DATA_LEVEL=0 AND DATA_TYPE IS NOT NULL AND (1<2 OR (1=2)) AND (LOWER(OWNER) = LOWER(:1) OR (1=2)) AND (OBJECT_NAME = :2 OR (1=2)) AND (ARGUMENT_NAME = :3 OR (1=1)) ORDER BY OWNER,OBJECT_NAME,POSITION
    OCI 8 - OCIStmtPrepare
    OCI 8 - OCIAttrGet
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIStmtExecute
    OCI 8 - OCIAttrGet
    OCI 8 - OCIParamGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIParamGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIParamGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIParamGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIParamGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIParamGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIParamGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIParamGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIParamGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIParamGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIAttrGet
    OCI 8 - OCIDefn
    OCI 8 - OCIDefn
    OCI 8 - OCIDefn
    OCI 8 - OCIDefn
    OCI 8 - OCIDefn
    OCI 8 - OCIDefn
    OCI 8 - OCIDefn
    OCI 8 - OCIDefn
    OCI 8 - OCIDefn
    OCI 8 - OCIDefn
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIStmtFetch
    OCI 8 - OCIDescriptorFree
    OCI 8 - OCIDescriptorFree
    OCI 8 - OCIDescriptorFree
    OCI 8 - OCIDescriptorFree
    OCI 8 - OCIDescriptorFree
    OCI 8 - OCIDescriptorFree
    OCI 8 - OCIDescriptorFree
    OCI 8 - OCIDescriptorFree
    OCI 8 - OCIDescriptorFree
    OCI 8 - OCIDescriptorFree
    OCI 8 - OCIHandleFree(OCI_HTYPE_DESC)
    OCI 8 - OCIHandleFree(OCI_HTYPE_STMT)
    BEGIN :1 := "STK_CREATION_CONTENANT"(:2,:3,:4,:5,:6,:7,:8,:9,:10,:11); END;
    OCI 8 - OCIStmtPrepare
    OCI 8 - OCIAttrGet
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByPos
    OCI 8 - OCIBindByName
    OCI 8 - OCIBindByName
    OCI 8 - OCIBindByName
    OCI 8 - OCIBindByName
    OCI 8 - OCIBindByName
    OCI 8 - OCIBindByName
    OCI 8 - OCIBindByName
    OCI 8 - OCIBindByName
    OCI 8 - OCIBindByName
    OCI 8 - OCIBindByName
    OCI 8 - OCIBindByName
    OCI 8 - OCIStmtExecute
    OCI 8 - OCIErrorGet

    OCI 8 - OCIHandleFree(OCI_HTYPE_DESC)
    OCI 8 - OCIHandleFree(OCI_HTYPE_STMT)
    OCI 8 - OCITransRollback
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  14. #14
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    C'est ma foi malheureusement vrai mais l'idée reste bonne. Plutôt que de passer par du code Delphi n'y-a-t'il pas un outil de traçage de l'activité SQL du serveur fournit par Oracle ?

    L'objectif serait d'essayer de capturer la commande SQL d'exécution de la PS tel qu'elle arrive au moteur SQL afin de voir si par hasard il n'y aurait pas une malformation des paramètres.

    Ce serait également l'occasion d'essayer cette commande dans un analyseur de requête pour essayer de tester plus profondemment.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  15. #15
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    La première requête est apparemment pour récupérer les types des paramètres de la procédure stockée.

    Je ne peux pas t'aider plus n'ayant jamais utiliser de procédure stockée.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  16. #16
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    C'est ma foi malheureusement vrai mais l'idée reste bonne. Plutôt que de passer par du code Delphi n'y-a-t'il pas un outil de traçage de l'activité SQL du serveur fournit par Oracle ?
    Je vais voir avec les DBA.

    Citation Envoyé par Aka Guymelef Voir le message
    L'objectif serait d'essayer de capturer la commande SQL d'exécution de la PS tel qu'elle arrive au moteur SQL afin de voir si par hasard il n'y aurait pas une malformation des paramètres.
    C'est quasi-certain, qu'Oracle reçoit une valeur qu'il ne comprend pas, là où il s'attend à recevoir un nombre.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

Discussions similaires

  1. [Débutant] Retour d'une procédure stockée Oracle avec paramètre NULL
    Par Hobbi1 dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/12/2014, 19h07
  2. [XL-2010] Pas de retour sur un paramètre output depuis une procédure stockée oracle
    Par darmet dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/07/2014, 14h47
  3. Réponses: 0
    Dernier message: 15/04/2010, 13h54
  4. Réponses: 2
    Dernier message: 26/01/2010, 10h05
  5. Passer un tableau à une procédure stockée
    Par biroule dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/09/2004, 18h21

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