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

Delphi Discussion :

ado storedproc returnvalue


Sujet :

Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut ado storedproc returnvalue
    Bonjour. J'essais d'utiliser le composant TADOStoredProc pour executer des procedures stockées.tout se passe bien avec les procedures stockées qui ne renvoient pas de valeur, mais ça ne marche pas avec les ps qui renvoient une valeur.

    Attention, je ne parle pas des procedures qui renvoient un dataset, mais des procedures qui renvoient un scalaire . (une fonction donc)

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    on a pas déjà évoqué cela ici

    http://www.developpez.net/forums/sho...light=ExecProc

    Essaye donc un bon Open !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut
    Bonjour. Non ,il ne s'agit pas du même pb. Dans le pb précédent, la procedure ne renvoyait ni scalaire , ni résultat set. Cette fois ci, il s'agit d'une autre procedure qui renvoie un integer. J'insiste, la procedure n'ouvre pas de curseur, mais renvoie un nombre

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Donc je confirme dans le post que j'ai mentionné, j'évoque Parameters , qui devrait contenir les résultats non dataset ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut
    effectivement , mais ça ne fonctionne pas.
    Delphi retrouve tout seul ces paramètres.il reconnait qu'il y en a deux. (un en entrée et un pour la valeur de retour) mais lorsque j'essai de faire un open ou un execproc, j'ai un message du style "programme machin non trouvé avec les paramètres indiqués"

    Lorsque delphi retrouve les paramètres, il met le second en output.j'ai essayé le type returnvalue, mais le resultat est le meme.

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Quel base de données utilises tu ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut
    Pour l'instant je fais des tests avec une base de données DB2 sur as400
    Dans quelques jours je devrais pouvoir faire des tests sur une base sql serveur.

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    normalement tu as accès à tes valeurs de retour avec FieldByName ou je ne sais quel autre moyen (Ca fait un moment que je n'ai plus utilisé de procédure stockée, faut que cela revienne ^^)

    Avec SQL Server je me souviens qu'avec la version 2000 il faut récupérer @Nom_du_param_de_retour et avec les versions supérieures @@Nom_du_param_de_retour.

    Faut faire des tests
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut
    Le problème c'est qu'une exception est levée lors du execproc, donc je ne peux pas accéder aux valeurs de retour ..

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Peux tu faire voir ton code complet de l'appel de la procédure stockée et aussi la procéduer stockée elle même.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut
    ci dessous une exemple simplifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE FUNCTION ARNAUD/FUNC1 (X integer)      
             RETURNS integer             
             LANGUAGE SQL                
             CONTAINS SQL                
             NO EXTERNAL ACTION          
             DETERMINISTIC               
             RETURN     2*X
    Ci dessous l'appel à la procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADOStoredProc1.ExecProc
    ***********************
    Un collègue vient de me proposer une solution.
    En utilisant un composant tadoquery, je peux executer la requete suivante :

    select arnaud.func1(2) from sysibm.sysdummy1

    La table sysdummy est une table avec un enregistrement destinée à ce genre de requetes.
    Mais cela fonction sur une base db2 ibm. Je devrais bientot devoir travailler sur une base sql server, et il semble qu'il n'y ait pas d'équivalent à la table sysdummy1. Je crois que je vais créer une nouvelle discussion pour cela.

  12. #12
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Et l'exception elle te dit quoi ? (oublie de demander au post précédent )
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut
    Ci dessous le texte de l'exception

    SQL0440 : Programme FUNC1 de ARNAUD non trouvé avec les paramètres indiqués.

    Cause . . . . . : Une fonction ou une procédure portant le nom indiqué et les associée aux arguments compatibles n'a pas été trouvée.Que faire . . . : Indiquez le nombre et le type correct de paramètres dans l'instruction CALL ou l'appel de fonction. Renouvelez ensuite votre demande.
    la procedure stockée (qui est en fait une fonction) prend un entier en entrée et renvoie un entier. J'ai essayé toutes les solutions possibles lors de la définition des paramètres dans le composant TADOStoredProc et à chaque fois la meme erreur.
    solutions essayées :
    _2 paramètres , le second en outpu
    _2parmaètres, le second en returnvalue
    _ 1parmamètre (celui d'entrée)

Discussions similaires

  1. Réponses: 31
    Dernier message: 30/03/2006, 16h57
  2. [ADO] Tester l'existence d'une table
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/09/2002, 13h55
  3. [ADO] Constantes des types de champ
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/09/2002, 11h08
  4. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58
  5. [MFC] ADO connection
    Par philippe V dans le forum MFC
    Réponses: 3
    Dernier message: 10/06/2002, 07h36

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