を持つストアドプロシージャを。ここ は私のC#のコードです:私はそれを実行するとは、私はこのように書きストアドプロシージャを持って戻り値
SqlConnection scon = new SqlConnection(connectionString);
SqlCommand authCmd = new SqlCommand("AuthenticateUser", scon);
authCmd.CommandType = System.Data.CommandType.StoredProcedure;
SqlParameter userNameParam = authCmd.Parameters.Add("@AzUserName", System.Data.SqlDbType.VarChar, 20);
userNameParam.Value = username;
string hashed = Md5Hash.ComputeHash(username);
SqlParameter hashedParam = authCmd.Parameters.Add("@Hash", System.Data.SqlDbType.VarChar, 32);
hashedParam.Value = hashed;
SqlParameter userIdParam = authCmd.Parameters.Add("@UserId", System.Data.SqlDbType.Int);
userIdParam.Direction = System.Data.ParameterDirection.ReturnValue;
SqlParameter authorizedParam = authCmd.Parameters.Add("@Authorized", System.Data.SqlDbType.Bit);
authorizedParam.Direction = System.Data.ParameterDirection.ReturnValue;
scon.Open();
authCmd.ExecuteNonQuery();
scon.Close();
私は、次のエラーを取得しています:私はParameterDirection.OutputでParameterDirection.ReturnValueを交換した場合
{"Procedure or function 'AuthenticateUser' expects parameter '@UserId', which was not supplied."} System.Exception {System.Data.SqlClient.SqlException}
私はエラーを取得していないが、取得することはありませんしていますプロシージャの値
更新日: ありがとうございました。このエラーはあなたが思っていたよりも些細なことでした。私は結果を返すために、今日、かなり長い間、ReturnValueをOutputに前後に変更してきました。それから、私はあなたのハッシュ値を取っていることに気付くだけで、私の質問を投稿しなければなりませんでした。ユーザーネーム。
ストアドプロシージャのパラメータリストに注意してください** @ UserId bigint出力、** – Kaf
あなたのパラメータ'OUTPUT'ですので、' ParameterDirection.Output'として定義する必要があります - ** not ** '.ReturnValue' ... –