【问题标题】:Retrieving "output messages" from batch SQL command (SQL Server)从批处理 SQL 命令 (SQL Server) 中检索“输出消息”
【发布时间】:2008-11-18 19:11:20
【问题描述】:

我正在针对 SQL Server 批量执行多个离散查询。例如:

更新 tableX 设置 colA = 'freedom'; 从客户中选择姓氏; 插入表 Y (a,b,c) 值 (x,y,z);

现在,我想在 DataSet(来自 select 语句)中捕获结果,这很容易做到……但是我如何也捕获来自该命令的“元”响应,类似于查询分析器/SQL 的方式Mgt Studio 在显示“消息”选项卡并显示类似于以下内容时会执行此操作:

(1 行受影响) (更新了 2 行)

【问题讨论】:

    标签: c# sql-server ado.net


    【解决方案1】:

    查看 SQL 连接事件。我认为这就是你所追求的: http://msdn.microsoft.com/en-us/library/a0hee08w.aspx

    【讨论】:

      【解决方案2】:

      我的建议是为此使用@@rowcount 变量。通常,当我执行此类命令时,如果我想同时捕获潜在错误和受影响的行,我会这样做

      declare @rowsAffected int, @error int
      
      select * from sometable
           select @rowsAffected = @@rowcount, @error = @@error
      
      if @@error <> 0 goto errorCleanup
      

      【讨论】:

        【解决方案3】:

        Nick 建议 @@ROWCOUNT 是对的——事实上,作为例行程序,我总是使用 SET NOCOUNT ON,它具有(小)性能优势——但更重要的是,这个细节是一个实现细节——所以你编码不应该在乎...

        如果要返回一个值(例如更新的行数),请使用以下任何一种:

        • 返回值
        • 输出参数
        • SELECT 语句

        最后一个开销最大

        【讨论】:

          猜你喜欢
          • 2018-06-04
          • 1970-01-01
          • 2011-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多