gpt4 book ai didi

asp.net - SQL 数据源 - 存储过程和返回参数

转载 作者:行者123 更新时间:2023-12-02 02:36:08 24 4
gpt4 key购买 nike

我在 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 获取存储过程的返回值?

最佳答案

我认为这句话是你的问题。

InsertCommand="@insertedId = insertProc"

您不需要将存储过程的返回值显式分配给返回值参数。只需指定存储过程的名称即可。

 InsertCommand = "InsertProc"

另一件事是,您必须在 OnInserted 事件处理程序中的参数名称前加上“@”。

this.insertedId = Convert.ToInt32(e.Command.Parameters["@insertedId"].Value);

关于asp.net - SQL 数据源 - 存储过程和返回参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com