Tsql 从单个查询捕获@错误和@行数

Tsql 从单个查询捕获@错误和@行数,tsql,Tsql,这看起来应该很简单,但我找不到一个方法来做 set nocount on; Update MyTable set MyField = 'value' --where 1 = 1/0 -- comment in to test getting an error. print convert(varchar, @@error) print "blah blah" + convert(nvarchar, @@rowcount) -- this is always zero because of t

这看起来应该很简单,但我找不到一个方法来做

set nocount on;

Update MyTable
set MyField = 'value'
--where 1 = 1/0 -- comment in to test getting an error.

print convert(varchar, @@error)
print "blah blah" + convert(nvarchar, @@rowcount) -- this is always zero because of the previous statement
我尝试将它们存储在一个变量中,但设置该变量会生成一个新的@rowcount和new@@错误值


我还尝试使用if条件,因为我不关心行数。但是计算if似乎也会重置@@rowcount。

您可以在一条语句中执行此操作,如下所示:

DECLARE @err INT, @cnt INT
SELECT @err=@@ERROR, @cnt=@@ROWCOUNT

您可以在一条语句中完成,如下所示:

DECLARE @err INT, @cnt INT
SELECT @err=@@ERROR, @cnt=@@ROWCOUNT

这取决于您在哪个平台上工作。那么它是哪一个呢?这取决于您在哪个平台上工作。那是哪一个呢?