0

私はとても迷っています....これは私のストアドプロシージャです:

@User_ID INT,
@Form_NAME NVARCHAR(25)
AS
BEGIN
    DECLARE @Count int = 0
    DECLARE @myReturnCode INT

    SELECT @Count = COUNT (tblForms.Form_Name)
        FROM  tblForms INNER JOIN
                       tblForms_Roles_MTM ON tblForms.Form_Id = tblForms_Roles_MTM.Form_Id INNER JOIN
                       tblRoles ON tblForms_Roles_MTM.Role_Id = tblRoles.Role_Id INNER JOIN
                       tblUsers_Roles_MTM ON tblRoles.Role_Id = tblUsers_Roles_MTM.Role_Id
        WHERE (tblUsers_Roles_MTM.User_Id = @User_ID AND tblForms.Form_Name = @Form_NAME)

    IF @Count = 0
        BEGIN SET @myReturnCode = 0 END
    ELSE
        BEGIN SET @myReturnCode = 1 END
    SELECT @myReturnCode as ReturnCode
END

私のコード ビハインドでは、2 つのパラメーターを渡すプロシージャを呼び出してから、次のようにします。

...
con.Open();
int ReturnCode = (int)cmd.ExecuteScalar();
Response.Write(ReturnCode);

しかし、myReturnCode は常に 0 です。

SSMS で proc を実行すると、「結果」に 2 つの値が表示されます。

ここに画像の説明を入力

ExecuteScalar は「戻り値」の値を返していると思います。
では、「ReturnCode」の値を取得するにはどうすればよいでしょうか?

私は過去36時間それをグーグルで調べてきました。答えはおそらくそこにありますが....どこですか?見つかりませんでした。
どんなヒントでも大歓迎です。
(Win-7、SS-2014、VS-2013)

4

1 に答える 1

0

誠に申し訳ありません.... テーブルの 1 つのデータが無効でした。プロシージャーは意図したものを見つけられなかったため、常に 0 を返しました。ストアド プロシージャーとコードは問題ありません。そのテーブルのデータを修正すると、問題が解決しました。

私はとても恥ずかしいです....どうすればこの質問を殺すことができますか? このフォーラムでは単なるホワイト ノイズです。

于 2015-08-14T19:14:00.350 に答える