2

私はこの手順を持っています:

ALTER PROCEDURE [xyz].[stored_proc]
    @input1 as int, 
    @input2 as nvarchar(255)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE ...
    SET input1=@input1
    WHERE input2=@input2 AND
    input3 NOT IN (123)
END

update 句の出力をキャッチして、プロシージャの出力パラメーターとして返したいので、.net コードで処理できます。どうすればこれを達成できますか?

4

1 に答える 1

2

私はOUTPUTまだ句を見ません - しかし、あなたがそれを持っていた場合、あなたがする必要があるのは、このストアドプロシージャを、(SELECTステートメントから)結果セットを返すかのように実行することです:

using (SqlConnection conn = new SqlConnection(-your-connection-string-here-))
using (SqlCommand cmd = new SqlCommand("[xyz].[stored_proc]", conn))
{
    cmd.CommandType = CommandType.StoredProcedure;

    conn.Open();

    // execute your UPDATE statement with an OUTPUT clause into a SqlDataReader
    using(SqlDataReader reader = cmd.ExecuteReader())
    {
        // read the values returned from the OUTPUT clause
        while(reader.Read())
        {
            int insertedID = reader.GetInt32(0);
            // do something with those values....                
        }
    }

    conn.Close();
}

これは、ストアド プロシージャ内の UPDATE ステートメントが次のようになると想定しています。

UPDATE ...
OUTPUT Inserted.ID    -- or something else....
SET input1 = @input1
WHERE input2 = @input2 
  AND input3 NOT IN (123)
于 2013-05-20T08:03:31.330 に答える