|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : mars 2006 Messages : 92 ![]() |
Bonjour tlm,
J'ai un souci sur la valeur de retour d'une procédure stockée. Je voudrais renvoyer une variable de type "VARCHAR(10)". Mais lorsque je fais "RETURN val;" je reçois une erreur qui m'indique que je ne peux renvoyer que des "INTEGER" : Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() Inscription : mars 2006 Messages : 92 ![]() |
Voici la proc stock :
Code :
|
||
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Je peux me tromper mais il me semble qu'il manque le paramètre CurId en sortie et que DYNAMIC RESULT SETS 1 est en trop. Voici ce que j'écrierais :
Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 92 ![]() |
J'ai testé et ça fonctionne.
Mais comment est-ce que l'on récupère la valeur de sortie OUT ? |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Sur quelle plate-forme travailles-tu ?
|
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 92 ![]() |
Je travaille sur C#.NET
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Je ne connais pas ce langage mais comment ecrirais-tu par exemple
en C#.net ? |
|
|
00
|
|
|
#8 | ||||
|
Membre du Club
![]() Inscription : mars 2006 Messages : 92 ![]() |
Je n'ai jamais utilisé le mot clé "INTO".
En fait, je crée une chaîne comportant ma requête : Code :
SELECT monChamps FROM maTable WHERE monChamps = 'Tralala' Puis je crée un objet DB2Command avec la connection et la requête. Et enfin j'exécute la requête, avec la méthode ExecuteReader de l'objet DB2Command. Celle-ci me renvoie un objet DB2DataReader qui représente le résultat de la requête. Habituellement un tableau que je parcours de cette façon : Code :
Code :
Call ma_procedure('parametre1', 'parametre2') Code :
|
||||
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Si je reprends ton code d'appel de la procédure
Code :
Call ma_procedure('parametre1', 'parametre2') |
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 92 ![]() |
Très bonne question !
Je ne sais pas encore comment faire, mais je devrais trouver ce matin. |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 3 ![]() |
pour retourner ta chaine fais plutot un
SET CurdId = CurrentId; et dans ton code C# MaVar = cmd.execute(sql) |
|
|
00
|
|
|
#12 | ||||
|
Membre du Club
![]() Inscription : mars 2006 Messages : 92 ![]() |
Je viens de trouver comment récupérer les paramètres de ma procédure stockée.
En fait l'objet DB2Command que je crée avec la connection et la requête, possède un attribut "CommandType", qui permet d'indiquer si c'est une simple requête ou un appel à une procédure stockée, et un attribut "Parameters" qui permet d'ajouter des paramètres et de spécifier s'ils sont 'IN', 'OUT' ou 'INOUT' (Par défaut les paramètres sont 'IN'). Ainsi lors de la création de l'objet DB2Command, la requête n'est plus : Code :
Call ma_procedure('parametre1', 'parametre2') Code :
Code :
|
||||
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 92 ![]() |
Merci beaucoup Mercure pour ton aide.
Merci aussi à Sickfrid, t'as solution fonctionne aussi mais au lieu d'utiliser la méthode ExecuteReader de l'objet DB2Command, il faut utiliser la méthode ExecuteScalar. |
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
D'après les questions et réponses que tu nous montres, tu donnes l'impression d'être sérieux. Continue comme ça, tu es sur la bonne voie.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com