Comment get la valeur de return de la procédure stockée

J'ai la procédure stockée suivante:

ALTER PROCEDURE spLogin @CAD_WEB_LOGIN_USERNAME varchar(60), @CAD_WEB_LOGIN_PASSWORD varchar(60), @Result int output AS BEGIN SELECT CAD_NUMBER FROM CMACADDR WHERE CAD_WEB_LOGIN_USERNAME = @CAD_WEB_LOGIN_USERNAME AND CAD_WEB_LOGIN_PASSWORD = @CAD_WEB_LOGIN_PASSWORD END 

En C #, je veux exécuter cette requête et get la valeur de return.

C'est mon code:

 int flag = 0; con.Open(); SqlCommand cmd3 = new SqlCommand("spLogin", con); cmd3.Connection = con; cmd3.CommandType = CommandType.StoredProcedure; cmd3.Parameters.Add("@CAD_WEB_LOGIN_USERNAME", SqlDbType.VarChar).Value = txtUserName.Text; cmd3.Parameters.Add("@CAD_WEB_LOGIN_PASSWORD", SqlDbType.VarChar).Value = txtPassword.Text; SqlParameter parm = new SqlParameter("@Return", SqlDbType.Int); parm.Direction = ParameterDirection.ReturnValue; cmd3.Parameters.Add(parm); flag = cmd3.ExecuteNonQuery(); con.Close(); int id = Convert.ToInt32(parm.Value); 

J'ai une erreur

La procédure ou la fonction 'spLogin' attend le paramètre '@Result', qui n'a pas été fourni.

Quelle est l'erreur de logique avec ce code?

Merci

Comme l'erreur suggère que 'spLogin' attend le paramètre '@Result'

Changement

 SqlParameter parm = new SqlParameter("@Return", SqlDbType.Int); 

à

 SqlParameter parm = new SqlParameter("@Result", SqlDbType.Int); 

MODIFIER

Également mis à jour votre procédure, renvoyez une valeur. Actuellement, vous ne returnnez rien . De plus, vous n'avez pas besoin d'append un paramètre supplémentaire dans SP.

 ALTER PROCEDURE Splogin @CAD_WEB_LOGIN_USERNAME VARCHAR(60), @CAD_WEB_LOGIN_PASSWORD VARCHAR(60) AS BEGIN Declare @MyResult as INT SELECT @MyResult = cad_number FROM cmacaddr WHERE cad_web_login_username = @CAD_WEB_LOGIN_USERNAME AND cad_web_login_password = @CAD_WEB_LOGIN_PASSWORD RETURN @MyResult -- return value END 

Remplacez ParameterDirection par Output et remplacez le nom du paramètre par @Result .

 SqlParameter parm = new SqlParameter("@Result", SqlDbType.Int); parm.Direction = ParameterDirection.Output; cmd3.Parameters.Add(parm);