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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Âge : 45
    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 705
    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. :bug: ___ "http://club.developpez.com/regles/#LIII-A"É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.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

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

    tes parametres sont tous des "ftString" ?

  3. #3
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Âge : 45
    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 705
    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. :bug: ___ "http://club.developpez.com/regles/#LIII-A"É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.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  4. #4
    Inactif  
    Inscrit en
    Novembre 2008
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 255
    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 confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 177
    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
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Âge : 45
    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 705
    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. :bug: ___ "http://club.developpez.com/regles/#LIII-A"É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.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  7. #7
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Âge : 45
    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 705
    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. :bug: ___ "http://club.developpez.com/regles/#LIII-A"É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.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

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, 20h07
  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, 15h47
  3. Réponses: 0
    Dernier message: 15/04/2010, 14h54
  4. Réponses: 2
    Dernier message: 26/01/2010, 11h05
  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, 19h21

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