我有需要在哪里获取存储过程中select语句的行数,如果行计数等于0则只执行下一个语句
select A, B, C
from AT
where B = 1
如果上面的语句返回任何行,那么它将不会进一步执行,但如果此语句没有任何行,那么它将执行下一个语句。我已经尝试过以两种方式使用它
@@rowcount
- 它无法正常工作有没有解决方案?
答案 0 :(得分:4)
您可以使用IF NOT EXISTS
:
IF NOT EXISTS (select A,B,C from AT where B=1)
BEGIN
-- sth
END
是否有任何解决方案,如进入变量而不是一次又一次地访问数据库
DECLARE @my_rowcount INT;
select A,B,C from AT where B=1;
SET @my_rowcount = @@ROWCOUNT; -- immediately after select get @@ROWCOUNT
...
IF @my_rowcount = 0
BEGIN
-- sth
END
修改强>
@@ ROWCOUNT数据库的全局变量,因此如果在同一数据库中的其他sp中处理任何其他select语句,它可能返回错误的值
不。 @@ROWCOUNT:
返回受最后一个语句影响的行数。
您可以使用SSMS轻松检查它(打开2个标签,在每个标签上选择1行和2行,然后分别获得@@ ROWCOUNT)。