Exécuter une procédure stockée (variable output)

sikove Messages postés 90 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 31 mars 2010 - 27 janv. 2009 à 17:24
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 27 janv. 2009 à 18:01
Salut,

depuis ce matin, dieu seulemet sait comment j'ai testé et essayé de le faire fonctionner mais ça ne marche pas

donc voila comment éxecuter une procédure stockée qui as un parametre de sortie (output) ? pourtant j'ai bien écrit mon code :


Code VB.NET / ADO.NET:
----------------------------------------
Dim scom As New SqlCommand("nbrmsg", scon)
scom.CommandType = CommandType.StoredProcedure
Dim spar As SqlParameter = scom.Parameters.Add("@val", SqlDbType.Int)
spar.Direction = ParameterDirection.ReturnValue
scon.Open()
Try
Dim sdr As SqlDataReader = scom.ExecuteReader
While sdr.Read
MsgBox(spar.value)
End While
sdr.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
scon.Close()

Ma procédure :
------------------------------------

create proc nbrmsg (@val int output) as
begin
select @val=count(*)
from message
end

-declare @nb int
-exec nbrmsg @nb output
-select @nb

pouvez vous m'aider svp ?

merci d'avance

2 réponses

sikove Messages postés 90 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 31 mars 2010
27 janv. 2009 à 17:32
Désolé, voila mon message en plus propre  :

-----------------------------------------
Salut,

depuis ce matin, dieu seulemet sait comment j'ai testé et essayé
de le faire fonctionner mais ça ne marche pas !!

donc voila comment
éxecuter une procédure stockée qui as un parametre de sortie (output) ?
pourtant j'ai bien écrit mon code :

Code VB.NET / ADO.NET:
 ----------------------------------------

Dim scom As New
SqlCommand("nbrmsg", scon)
scom.CommandType =
CommandType.StoredProcedure Dim spar As SqlParameter scom.Parameters.Add("@val", SqlDbType.Int) spar.Direction
ParameterDirection.ReturnValue
scon.Open()
Try
Dim sdr As SqlDataReader
= scom.ExecuteReader
While sdr.Read
MsgBox(spar.value)
End While

sdr.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try

scon.Close()

Ma procédure :
------------------------------------

create
proc nbrmsg (@val int output) as
begin
select @val=count(*) from
message
end
-declare @nb int
-exec nbrmsg @nb output
-select @nb

pouvez
vous m'aider svp ? merci d'avance
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
27 janv. 2009 à 18:01
Salut
La syntaxe SQL est bonne.
D'après la doc, il semble y avoir une différence entre ReturnValue et Output :
Output représente une variable définie comme telle dans la procédure
ReturnValue renverra le code d'exécution de la procédure (les fameux chiffres impairs quand défaut, et pair pour warning)
Je pense donc qu'il faudrait utiliser ParameterDirection.Output
A approfondir

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0