0

Stored proc への呼び出しを実装しようとしましたが、proc は後で使用する ID を返します。実行するたびに、out パラメーターを -1 として取得します。以下は私のサンプルコードです:

        OleDbCommand sqlStrProc = new OleDbCommand();
        sqlStrProc.Connection = dbConn;
        sqlStrProc.CommandText = "dbo.insert_test";
        sqlStrProc.CommandType = CommandType.StoredProcedure;

        sqlStrProc.Parameters.Add("@p_TestID", OleDbType.Integer, 255).Direction = ParameterDirection.Output;

        sqlStrProc.Parameters.Add("@p_TestName", OleDbType.VarChar).Value = "Test";
        sqlStrProc.Parameters.Add("@p_CreatedBy", OleDbType.VarChar).Value = "Test";


        int personID = sqlStrProc.ExecuteNonQuery();
        Row.outPersonID = personID;  

personID は常に -1 です。ここで何が間違っていますか。助けてください..!!以下はストアドプロシージャコードです

CREATE PROCEDURE [dbo].[INSERT_TEST]
     @p_TestID int OUTPUT,
     @p_TestName varchar (50),
     @p_CreatedBy varchar (100)
AS
SET NOCOUNT ON


INSERT INTO Test(
    TestName,
    CreatedBy)
VALUES
(    @p_TestName,
    @p_CreatedBy)

SELECT @p_TestID = SCOPE_IDENTITY()
4

2 に答える 2

0

-1 は、ストアド プロシージャが期待どおりに実行できず、トランザクションがロールバックされたことを意味する場合があります。2 つの入力パラメーターのサイズが異なるが、同じ入力を使用しているため、切り捨ての問題を探す必要がある場合があります。また、接続などを開閉するための適切なコードがあると思いますか?

于 2014-03-18T17:38:34.177 に答える