从批处理SQL命令(SQL Server)检索“输出消息”
我正在针对SQL Server在一个批处理中执行几个离散查询。 例如:
update tableX set colA ='freedom'; 从客户中选择lastName; 插入tableY(a,b,c)值(x,y,z);
现在,我想在DataSet中捕获结果(来自select语句),这很容易做到……但是我如何从该命令捕获“meta”响应,类似于Query Analyzer / SQL Mgt Studio的方式当它显示“消息”选项卡和diplays类似于:
(1排受影响) (2行更新)
研究SQL Connection事件。 我认为这就是你所追求的: http : //msdn.microsoft.com/en-us/library/a0hee08w.aspx
我的建议是使用@@ rowcount变量。 通常,当我执行这些命令时,如果我想捕获潜在错误和受影响的行,我会这样做
declare @rowsAffected int, @error int select * from sometable select @rowsAffected = @@rowcount, @error = @@error if @@error <> 0 goto errorCleanup
Nick建议使用@@ROWCOUNT
是正确的 – 实际上,作为例程,我总是使用SET NOCOUNT ON
,它具有(小)性能优势 – 但更重要的是,这个细节是一个实现细节 – 所以你的代码不应该关心…
如果要返回值(例如更新的行数),请使用以下任何一项:
- 返回值
- 输出参数
- SELECT语句
最后一个开销最大