Hello,

j'appelle une procédure stockée (complexe, pas un simple insert & cie) et j'aimerais récupérer une valeur de retour (code erreur déterminé dans la procédure stockée).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
ALTER PROCEDURE [dbo].[ma_proc]  
	...
	@CODE_RETOUR integer OUTPUT
AS
	...
SELECT @CODE_RETOUR = 666
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
                    SqlCommand sqlCmdImportAppli = new SqlCommand();
                    sqlCmdImportAppli.CommandType = CommandType.StoredProcedure;
                    sqlCmdImportAppli.CommandText = "[ma_proc]";
                    sqlCmdImportAppli.Connection = ConnexionBD;
                    ...
                    SqlParameter sqlPrmCodRet = sqlCmdImportAppli.Parameters.Add("CODE_RETOUR", SqlDbType.Int);
                    sqlPrmCodRet.Direction = ParameterDirection.ReturnValue;
 
                        int ret = sqlCmdImportAppli.ExecuteNonQuery();
                        int codErr = Convert.ToInt32(sqlCmdImportAppli.Parameters["CODE_RETOUR"].Value);
Mais ret vaut -1 : ça ne me choque pas, vu qu'apparemment c'est censé retourner un "nombre de lignes affectées", ce qui n'a pas de sens ici.

Mais codErr vaut 0, et pas 666 comme attendu.

Quelqu'un peut m'aider ? Je ne trouve rien à ce sujet sur le net.