1

私は以前にそれを行ったことがありますが、動作させることができません.SP内で何かを返す選択を行い、コードビハインドで実行し、返されたコードで何でもしたいだけです.

C# コード

protected long getPassword(string EnteredPass) 
{
    var connectionString = ConfigurationManager.ConnectionStrings["GetConnector"].ConnectionString;
    SqlConnection dbConnection = new SqlConnection();
    dbConnection.ConnectionString = connectionString;
    SqlCommand dbCommand = new SqlCommand("PL_User_Check", dbConnection);
    dbCommand.CommandType = CommandType.StoredProcedure;

    SqlParameter abc = dbCommand.Parameters.Add("@User", SqlDbType.VarChar);
    abc.Value = EnteredPass;
    dbCommand.Parameters.Add("@ReturnValue", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue;

    dbConnection.Open();

    dbCommand.ExecuteNonQuery();
    dbConnection.Close();
    object x = dbCommand.Parameters[""].Value;
    return Convert.ToInt64(x);
}

ストアド プロシージャ...

ALTER PROCEDURE [dbo].[PL_User_Check]
    @User VARCHAR(50),
    @ReturnValue BIGINT OUTPUT
AS

DECLARE @pass BIGINT

--Data
SET @Pass = (SELECT Pass
    FROM dbo.UserPasswords
    WHERE [User] = @User)

SET @ReturnValue = @Pass
4

3 に答える 3

0

パラメータを明示的に渡すと、パラメータ オブジェクトの値をクエリできます。Parameters.Add を使用しており、暗黙的にオブジェクトを作成しています。方法:

  1. 戻り値のパラメーター オブジェクトを作成する
  2. dbCommand に明示的に追加する

それはあなたの問題を解決するはずです。

于 2013-10-31T16:58:48.723 に答える
0

実行前

dbCommand.AddOutParameter("@ReturnValue", DbType.Int64);

実行後

dbCommand.GetParameterValue<Int64>("@ReturnValue")
于 2013-10-31T16:59:08.973 に答える