OVH Cloud OVH Cloud

Valeur retour d'une procedure stockée

2 réponses
Avatar
Bouba 85
Bonjour,

Voici ma procedure stockée
BEGIN
INSERT INTO [dbo].[T_TypeReglette] (
[LibelleTypeReglette],
[IdUserTypeReglette],
[DateModifTypeReglette]
) VALUES (
@LibelleTypeReglette,
@IdUserTypeReglette,
@DateModifTypeReglette
)
END
BEGIN
SET @NEW_ID=@@IDENTITY
IF @NEW_ID=0
RETURN(0)
ELSE
RETURN(@NEW_ID)
END
Elle fonctionne sans probleme. Mais le truc c'est quand je l'excute dans SQL
Server Entreprise Manager
EXEC @RC = [BCV_Tech].[dbo].[P_Gestion_TypeReglette] @Id_TypeReglette,
@LibelleTypeReglette, @IdUserTypeReglette, @DateModifTypeReglette

print @RC

Le print @RC m'indique le numero du nouvel enregistrement mais le probleme
c'est quand je passe sous VB.NET 2005 je sais pas comment recuperer le RC.
J'ai essayé retval = cmd.ExecuteNonQuery() mais ca me retourne 1 ou 0 et non
le nouvel ID. Je pense que c'est @NEW_ID qui faut que je recupere mais je
sais pas comment faire.


Merci de m'aider

2 réponses

Avatar
Fred
Dans : news:,
Bouba 85 disait :
Bonjour,



Bonsoir,

Le print @RC m'indique le numero du nouvel enregistrement mais le
probleme c'est quand je passe sous VB.NET 2005 je sais pas comment
recuperer le RC. J'ai essayé retval = cmd.ExecuteNonQuery() mais ca
me retourne 1 ou 0 et non le nouvel ID. Je pense que c'est @NEW_ID
qui faut que je recupere mais je sais pas comment faire.



Avec ExecuteScalar peut-être ?
(ExecuteNonQuery retourne le nombre de lignes affectées par la commande)


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Ghislain Proulx
Bonjour,

La valeur numérique retournée par le ExecuteNonQuery est le nombre de ligne
affectée. Pour obtenir le "Return Value", tu dois déclarer un paramètre
RETURN_VALUE à ton SqlCommand et lire cette valeur après l'execution.
Exemple :

--------------------------------------------------------------------------------
cmdGetSkidDetails = New SqlCommand("sp_InsertTypeReglette", oSqlConn)
cmdGetSkidDetails.CommandType = CommandType.StoredProcedure

oMySqlCmd.Parameters.Add("RETURN_VALUE", SqlDbType.Int)
oMySqlCmd.Parameters("RETURN_VALUE").Direction =
ParameterDirection.ReturnValue

oMySqlCmd.ExecuteNonQuery()

Dim intID As Int32
intID = Int32.Parse(oMySqlCmd.Parameter("RETURN_VALUE").Value.ToString)
--------------------------------------------------------------------------------

Bonne fin de journée

Ghislain Proulx, MCAD

"Bouba 85" a écrit dans le message de
news:
Bonjour,

Voici ma procedure stockée
BEGIN
INSERT INTO [dbo].[T_TypeReglette] (
[LibelleTypeReglette],
[IdUserTypeReglette],
[DateModifTypeReglette]
) VALUES (
@LibelleTypeReglette,
@IdUserTypeReglette,
@DateModifTypeReglette
)
END
BEGIN
SET @NEW_ID=@@IDENTITY
IF @NEW_ID=0
RETURN(0)
ELSE
RETURN(@NEW_ID)
END
Elle fonctionne sans probleme. Mais le truc c'est quand je l'excute dans
SQL
Server Entreprise Manager
EXEC @RC = [BCV_Tech].[dbo].[P_Gestion_TypeReglette] @Id_TypeReglette,
@LibelleTypeReglette, @IdUserTypeReglette, @DateModifTypeReglette

print @RC

Le print @RC m'indique le numero du nouvel enregistrement mais le probleme
c'est quand je passe sous VB.NET 2005 je sais pas comment recuperer le RC.
J'ai essayé retval = cmd.ExecuteNonQuery() mais ca me retourne 1 ou 0 et
non
le nouvel ID. Je pense que c'est @NEW_ID qui faut que je recupere mais je
sais pas comment faire.


Merci de m'aider