c# - 使用 sqlCommand.ExecuteNonQuery() 返回范围标识

标签 c# asp.net return-value executenonquery

我有一个看起来像这样的存储过程。

ALTER PROCEDURE dbo.addPackage(

    @PackageStatus                      VARCHAR(50) = null,
    @OrgCode                            VARCHAR(50) = null,
    @SystemID                           VARCHAR(50) = null,
    @ID                               int OUTPUT
)
AS
BEGIN
    insert into package_table
    (
            PackageStatus,
            OrgCode,
            SystemID
            )
            values
            (@PackageStatus, 
            @OrgCode, 
            @SystemID
            )
            SET @ID =  SCOPE_IDENTITY()
END

我的函数将以下参数添加到 sql 命令并调用 sqlCommand.ExecuteNonQuery();

List<SqlParameter> parameters = new List<SqlParameter>();

parameters.Add(new SqlParameter("@PackageStatus", package.PackageStatus));
parameters.Add(new SqlParameter("@OrgCode", package.OrgCode));
 parameters.Add(new SqlParameter("@SystemID", package.SystemID));

SqlParameter outParameter = new SqlParameter("@ID", SqlDbType.Int);
outParameter.Direction = ParameterDirection.Output;
parameters.Add(outParameter);

但是我一直从存储的 porcuedure evne 返回 0,尽管我声明了一个 out 参数并在存储过程退出之前设置了它。记录已成功添加 ID 的自动递增值,但当我取回输出参数时未返回 ID。它被设置为 0。

有什么建议吗?

最佳答案

您已经定义了输出参数 - 但是在调用 .ExecuteNonQuery() 之后您是否也读出?不幸的是,您没有显示该代码...

基本上,你需要

SqlCommand cmd = new SqlCommand(..., connection); .....

// set up your parameter as above

connection.Open();
cmd.ExecuteNonQuery();

var outputValue = cmd.Parameters["@APID"].Value;  // you need to read it out!

connection.Close();

你在做这个吗??这就是您一直返回 0 的地方??

输出参数不是 .ExecuteNonQuery() 调用的返回值 - 您需要在调用后明确读出参数值。

关于c# - 使用 sqlCommand.ExecuteNonQuery() 返回范围标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8493127/

相关文章:

c# - 从 asp.net 应用程序访问网络共享。在 Visual Studio 中工作但在 IIS 中不工作,为什么?

c# - 在 asp.net 中更新 UpdatePanel 中的图像 url

javascript - 如何在 Google Maps API 中仅对单个标记进行动画处理

java - 捕获异常后返回 null 错误的设计

具有最后一个值隐式返回的 C 变体

c# - 将错误添加到 ModelState

c# - 使用自定义安全扩展的 SSRS 中的错误订阅传递

python - Swift 中函数的返回类型不一致

c# - MVC 2 中使用 JQuery 的验证摘要

c# - 类中声明的变量的内存分配