Comment récupérer le retour d'une procédure stockée

Résolu
Romain_cim Messages postés 11 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 4 février 2009 - 18 janv. 2006 à 14:33
Romain_cim Messages postés 11 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 4 février 2009 - 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

1 réponse

Romain_cim Messages postés 11 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 4 février 2009
18 janv. 2006 à 16:11
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.
3
Rejoignez-nous