Comment récupérer le retour d'une procédure stockée [Résolu]

Romain_cim 11 Messages postés lundi 24 mai 2004Date d'inscription 4 février 2009 Dernière intervention - 18 janv. 2006 à 14:33 - Dernière réponse : Romain_cim 11 Messages postés lundi 24 mai 2004Date d'inscription 4 février 2009 Dernière intervention
- 18 janv. 2006 à 16:11
Bonjour,

Je développe en ASP avec une base de donnée DB2 qui comporte une procédure stockée. Cette procédure stockée incrémente une valeur dans une table et renvoie l'enregistrement correspondant.
Ma procédure stockée s'appelle proc_ide_ft qui accepte un paramètre varchar(50), conn est mon objet connection et rsss est un recodset

j'éxécute cette ligne :
rsss = conn.execute("CALL proc_ide_ft('ft_numordre')")

Ma valeur s'incrémente bien dans la base mais rsss.RecordCount renvoie -1 et rsss(0) provoque une erreur : error '80020009'
Une exception s'est produite.

Pourtant ma procédure stockée renvoie bien un résultat quand j'appelle ma procédure à partir d'une invite de commande DB2 :

(j'ai même modifié le type de retour de la procédure pour qu'elle ne renvoie uniquement la valeur. Dans ce cas dans l'invite de commande on a etat du retour = 62 mais mon code asp récupère la même erreur)

Je recherche donc des infos sur la méthode de récupération du retour de ma procédure.

Merci beaucoup
Afficher la suite 

1 réponse

Répondre au sujet
Romain_cim 11 Messages postés lundi 24 mai 2004Date d'inscription 4 février 2009 Dernière intervention - 18 janv. 2006 à 16:11
+3
Utile
En fait, je fais les questions et les réponses car j'ai trouvé tout seul

Pour ceux que ça intéresse :

Ma méthode n'était pas du tout bonne, il faut plutôt utiliser un objet Command
Voici un exemple qui fonctionne : une fonction qui éxécute la procédure stockée en passant un paramètre et renvoi la valeur de retour de la procédure stockée.

function getNumOrdre()
CONST adParamInput = 1
CONST adParamReturnValue = 4
CONST adCmdStoredProc = 4
CONST adInteger = 3
CONST adVarChar = 200

SET cmLogin = Server.CreateObject("ADODB.Command")
cmLogin.CommandType = adCmdStoredProc
cmLogin.CommandText = "PROC_IDE_FT"
cmLogin.ActiveConnection = conn

SET prmResult = cmLogin.CreateParameter("@RETURN_VALUE", adInteger, adParamReturnValue, 4)
SET prmCode = cmLogin.CreateParameter("@ls_code", adVarChar, adParamInput, 50, "ft_numordre")

cmLogin.Parameters.Append prmResult
cmLogin.Parameters.Append prmCode

cmLogin.Execute
getNumOrdre = cmLogin.Parameters("@RETURN_VALUE")
end function

Par contre dans cet exemple ma procédure stockée renvoie une seule valeur integer et non un recorsdet comme prévu à l'origine.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Romain_cim

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.