値を返すSQLServerのストアドプロシージャがあります。
CREATE PROCEDURE [dbo].[insertProc]
@value1 INT,
@value2 INT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO table1(value1,value2) VALUES (@value1,@value2)
RETURN SCOPE_IDENTITY();
END
次のように構成されたSQLデータソースを使用して、ASP.NETからDBに接続します。
InsertCommand="@insertedId = insertProc"
InsertCommandType="StoredProcedure"
oninserting="sqlDS_Inserting"
oninserted="sqlDS_Inserted"
<InsertParameters>
<asp:Parameter Name="value1" />
<asp:Parameter Name="value2" />
<asp:Parameter Name="insertedId" DbType="Int32" Direction="ReturnValue" />
</InsertParameters>
戻り値を取得するために何をしたいのか。手順の本体では、sqlDS_Inserted
私はこれが好きです:
this.insertedId = Convert.ToInt32(e.Command.Parameters["insertedId"].Value);
しかし、エラーが発生します:
Object cannot be cast from DBNull to other types.
ただし、SQL Server Profilerを確認してコマンドを実行すると(@insertedId変数の宣言を追加)、正常に機能します。問題は何ですか?ASP.NETからストアドプロシージャの戻り値を取得するにはどうすればよいですか?