- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在根据我提前确定的参数运行一组迭代 SQL 查询。执行此 .sql 脚本中的每组查询并将行插入到临时表中。我想做的是在将一行插入临时表后停止其余语句的执行。为此,我在每次插入后检查@@ROWCOUNT 值。如果它是 0,那么我继续执行下一个 INSERT 语句。如果它是 <> 0 那么我想停止。我看到一些有趣的效果,我想知道当我检查它时 @@ROWCOUNT 是否被更改。这是一个基本示例:
create #temptable
INSERT INTO #temptable (...) SELECT a,b..,n FROM TABLE1 where param1=x1 and param2=x2
IF @@ROWCOUNT = 0
INSERT INTO #temptable (...) SELECT a,b..,n FROM TABLE1 where param1=y1 and param2=x2
IF @@ROWCOUNT = 0
INSERT INTO #temptable (...) SELECT a,b..,n FROM TABLE1 where param1=z1 and param2=x2
IF @@ROWCOUNT = 0
INSERT INTO #temptable (...) SELECT a,b..,n FROM TABLE1 where param1=x1 and param2=y2
IF @@ROWCOUNT = 0
INSERT INTO #temptable (...) SELECT a,b..,n FROM TABLE1 where param1=y1 and param2=y2
IF @@ROWCOUNT = 0
INSERT INTO #temptable (...) SELECT a,b..,n FROM TABLE1 where param1=z1 and param2=y2
我看到的是,当第一个插入有行时,它不会执行第二个插入,但它执行第三个。然后,它不会执行第四个 INSERT,但会执行第五个,等等。它是否应该停止所有进一步的执行,或者是否有某些范围正在更改?
一旦 INSERT 语句将一行插入到临时表中,有没有办法让此 SQL 停止?
最佳答案
@@ROWCOUNT 会随着执行的每个语句(包括 IF 语句)而重置;这就是为什么当您关心它时,您通常做的第一件事就是将其捕获到一个变量中,以便您可以随后使用该值执行操作,而不必担心它已更改。
UPDATE(无耻的 self 推销,真的):如果你想看到你的 SQL 自动分割成语句(所以在这里你会看到每个 IF/INSERT 组合构成一个语句),你可以通过 SQL Formatter 传递它就像我的PoorSQL.com site - 它将在语句之间放置一个空行! :)
另外:如何处理此问题的快速概述也适用于 @@ERROR
:http://www.novicksoftware.com/TipsAndTricks/sql-error-reset-after-every-statement.htm (尽管在 SQL 2005 及更高版本中,您确实应该使用 try/catch 而不是 @@ERROR
)
关于sql-server - @@ROWCOUNT 不像我想的那样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6846836/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!