Link如果@@ rowcount> 0將@@ rowcount重置爲0,則執行。爲什麼?
@@行數被用於通知受影響的最後 選擇,插入,更新行數或刪除語句
declare @row int select 100 if @@rowcount>0 set @[email protected]@rowcount ...
以上將返回0,因爲一旦
if @@rowcount>0
被執行 它被重置爲0,因爲它不返回任何行。所以總是分配給 可變第一
爲什麼聲明if @@rowcount>0
重置@@rowcount
爲0? @@rowcount
的值是否僅受選擇,插入,更新和刪除語句的影響?
謝謝
1 - 據我瞭解,理由爲@@ rowcount返回1而不是0是因爲影響一行的「SELECT @row,@@ rowcount」查詢。但是我認爲術語「受影響的行數」在sql語句處理DB表中的實際行時使用,但是您的select語句不訪問任何行,那麼爲什麼@@ rowcount返回1? – user702769
2 - 希望這個問題有一定的意義 - 如果我們要挑剔,是不是@@ rowcount返回受select語句影響的行數?如果是這樣,那麼對於@@ rowcount,「SELECT @row,@@ rowcount」應該返回0,因爲在從@@ rowcount檢索值時select語句尚未完全完成,因此沒有行受到影響然而?! – user702769
@ user702769:'SELECT @row,@@ rowcount'中的@@ rowcount受上面的'set @row = @@ rowcount;'影響。一個SELECT無法讀取它自己的@@ rowcount – gbn