调用带有返回值的存储过程

2024-01-10

我正在尝试从我的 C# Windows 应用程序调用存储过程。该存储过程正在 SQL Server 2008 的本地实例上运行。我可以调用该存储过程,但无法从该存储过程检索值。该存储过程应该返回序列中的下一个数字。我在网上做了研究,我见过的所有网站都指出这个解决方案有效。

存储过程代码:

ALTER procedure [dbo].[usp_GetNewSeqVal]
      @SeqName nvarchar(255)
as
begin
      declare @NewSeqVal int
      set NOCOUNT ON
      update AllSequences
      set @NewSeqVal = CurrVal = CurrVal+Incr
      where SeqName = @SeqName

      if @@rowcount = 0 begin
print 'Sequence does not exist'
            return
      end

      return @NewSeqVal
end

调用存储过程的代码:

SqlConnection conn = new SqlConnection(getConnectionString());
conn.Open();

SqlCommand cmd = new SqlCommand(parameterStatement.getQuery(), conn);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter param = new SqlParameter();

param = cmd.Parameters.Add("@SeqName", SqlDbType.NVarChar);
param.Direction = ParameterDirection.Input;
param.Value = "SeqName";

SqlDataReader reader = cmd.ExecuteReader();

我也尝试过使用DataSet检索具有相同结果的返回值。我想得到什么 我的存储过程的返回值?如果需要更多信息,请告诉我。


您需要添加一个ReturnValue命令的 -direction 参数:

using (SqlConnection conn = new SqlConnection(getConnectionString()))
using (SqlCommand cmd = conn.CreateCommand())
{
    cmd.CommandText = parameterStatement.getQuery();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("SeqName", "SeqNameValue");

    // @ReturnVal could be any name
    var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int);
    returnParameter.Direction = ParameterDirection.ReturnValue;

    conn.Open();
    cmd.ExecuteNonQuery();
    var result = returnParameter.Value;
}

将参数的方向设置为ParameterDirection.ReturnValue指示SqlCommand将其声明为变量并将存储过程的返回值分配给它(exec @ReturnValue = spMyProcedure...),就像用 SQL 编写的一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调用带有返回值的存储过程 的相关文章

随机推荐

  • Golang写入套接字而不用担心数据不完整

    我们都知道 Write 方法不能保证从缓冲区中写入高字节 因此 使用原始 Write 方法将字节写入套接字的规范方法如下所示 how many bytes we have written written 0 for written lt l
  • 无法让 QWindow::fromWinId 正常工作

    我的 Qt 5 9 程序 在 X11 Linux 上 使用以下命令启动其他应用程序QProcess 我想控制这些应用程序生成的窗口 所以我获得了它们winId价值和用途QWindow fromWinId得到一个QWindow实例 问题是这些
  • Laravel $request->expectsJson()

    我正在为我的 Laravel 应用程序进行 Ajax 登录 我正在使用角度 http method POST url admin login headers Content Type application json data email
  • 如何读取图像上的文字?

    我需要将一些扫描文档解析为文本数据 是否可以使用某些软件解析图像上写的文本 如果是 请推荐任何此类在线实用程序或软件 也许一些 OCR 软件会有帮助 http en wikipedia org wiki Optical character
  • 忽略“证书未知”警报

    我有以下简单的 Python 脚本 import socket import ssl if name main s socket socket socket AF INET socket SOCK STREAM s bind 443 s l
  • 销毁 Bootstrap 弹出窗口时出现 Javascript 错误

    尝试随时更改引导程序弹出窗口的标题和内容 我遇到了一些麻烦 我在销毁选择器中的弹出窗口内容时遇到此问题 错误是这样的 TypeError undefined is not a function evaluating data option
  • T-SQL删除插入的记录

    我知道标题可能看起来很奇怪 但这就是我想做的 我有很多记录的表 我想获取其中一些记录并将它们插入到其他表中 像这样的东西 INSERT INTO TableNew SELECT FROM TableOld WHERE 棘手的部分是我希望我插
  • Jquery UI 工具提示不支持 html 内容

    今天 我将所有 jQuery 插件升级为 jQuery 1 9 1 我开始将 jQueryUI 工具提示与 jquery ui 1 10 2 一起使用 一切都很好 但是当我在内容中使用 HTML 标签时 在title我正在应用工具提示的元素
  • 我怎样才能使这个模式持久化?

    我正在寻找一种方法 让这种模式在出现后持久存在 正如此处所示 用户只需在 div 外部单击一下即可将其关闭
  • 如何制作一个反应本机输入,向用户提供验证状态反馈。 [有效、Printine、错误、编辑]

    我希望输入能够随着用户键入而不断更新 然后失去焦点 反馈将是输入周围的边框 1 Green when valid 2 Amber when typing and is in error state Green when valid 3 Re
  • 一面一示例 T 测试 Python

    在 Python 中 我使用 SciPy 进行单样本 t 检验 from scipy import stats one sample data 177 3 182 7 169 6 176 3 180 3 179 4 178 5 177 2
  • Checkstyles + Gradle 抛出引起:java.lang.IllegalArgumentException:给定名称 COMPACT_CTOR_DEF

    我最近将 checkstyle 插件添加到项目中以进行静态代码分析 但更新之后google style xml从最新的大师那里 我开始收到以下异常 org gradle api tasks TaskExecutionException Ex
  • grails 2.0 - 正确使用 serverURL 进行生产?

    Grails 2 0 改变了它使用 grails serverURL 进行开发和测试环境的方式 如manual http grails org doc 2 0 x guide single html upgradingFromPreviou
  • Python从视频文件中提取wav

    Related 如何使用python从视频文件中提取音频 https stackoverflow com questions 19216450 how to extract audio from a video file using pyt
  • 如何在 Obj-C 类别中“伪造”ivars (iPhone)

    Update iPhone OS 3 1 有关联的对象 然而 iPhone 模拟器却没有 如果您想在模拟器中测试关联的对象代码 您应该提交错误 请参阅我的问题here https stackoverflow com questions 19
  • 最接近的 3 点组

    是否有一种已知的 有效的算法来查找最接近的组three云中的点 这类似于最近点对问题 http en wikipedia org wiki Closest pair of points problem但我正在寻找三点而不是两点 Edit 最
  • 导入路径 - 正确的方法?

    我知道有很多类似或相同的问题 但我仍然无法理解 找到使用模块的正确方法 Python 是我最喜欢的语言 除了使用导入之外 我喜欢其中的所有内容 递归导入 当您尝试引用尚不存在的名称时 导入路径等 所以 我有这样的项目结构 my projec
  • 类的 += 运算符的规范形式

    我知道尽可能多地使用非成员非友元类的接口是个好主意 而且我刚刚意识到 对于我的 3D 矢量类 Vector3 我可以移动 等运算符从类中删除 只留下构造函数和复制赋值运算符 问题是 这个运算符应该是什么样子 我见过许多其他运算符的规范形式并
  • 列表内部或外部的序言对有什么用

    我在 SWI PL 文档中多次遇到键值对 但无法获得有关它们的详细信息 这是序言中的标准内容还是只是 swi pl 的扩展 主要在这里找到 http www swi prolog org pldoc doc for object keyso
  • 调用带有返回值的存储过程

    我正在尝试从我的 C Windows 应用程序调用存储过程 该存储过程正在 SQL Server 2008 的本地实例上运行 我可以调用该存储过程 但无法从该存储过程检索值 该存储过程应该返回序列中的下一个数字 我在网上做了研究 我见过的所