我在 SQL Server 中有一个存储过程,它返回一个值:
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 连接到数据库,其配置如下:
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 获取存储过程的返回值?