SQL Serverは、行@@ ROWCOUNTは常に0の問題で影響を受けます

ストアドプロシージャは次のとおりです。

WHILE( 1=1 )
begin
	Begin Try
		Begin Transaction

		 Update RIS.dbo.A 
         set registerid_with_number = CDRDB_VIEW.DBO.ONLY_GET_Number(hisexamineid)
		 where  registerid IN (
                                  SELECT TOP 10000 registerid 
                                    FROM RIS.dbo.A 
                                   WHERE registerid_with_number IS NULL
                              )
        PRINT '更新一次'
		--全部更新完后,退出
		if @@rowcount = 0  
		begin
			COMMIT Transaction
			PRINT '最后提交一次'
			BREAK
		end


		COMMIT Transaction
		PRINT '提交一次'
		waitfor delay '00:00:01'  --睡眠1秒,避免锁表

	   End Try

	   Begin Catch
       .........................--省略

ゼロは印刷@@ ROWCOUNTの値、および各時間0、更新、毎回初めてのプロセスを実行しますが、明らかに、どのように行数が影響を受ける可能性が万行に影響を与えているのですか?最初に私には、後にマニュアルの提出に変更し、SQL Serverが自動的に変更された行を更新するために提出されたと思ったまだ一貫性がある@@ ROWCOUNT 0

決勝:

      @@ ROWCOUNTの挿入、OKを更新、削除しないだけを表し、選択は、それがまた記録、行他の文を返されました。

       私はそれがされている、印刷の途中で@@ ROWCOUNTをリセットするには、「更新」のよ0

ソリューション:

      次の行に続く@@ ROWCOUNTは、SQL文を検出するために、すべての文をリセットすることはできません。

更新RIS.dbo.A  

セットregisterid_with_number = CDRDB_VIEW.DBO.ONLY_GET_Number(hisexamineid)
 どこregisterid IN(

                                        SELECT TOP 10000 registerid

                                           RIS.dbo.A FROM 

                                       WHERE)registerid_with_number NULL IS
 終了後の総アップデート-
= 0 @@をrowCountのIF  
 始める
           トランザクションCOMMIT
           '最後の時間をコミット' --printを
             BREAK
ENDを

 

公開された35元の記事 ウォン称賛61 ビュー160 000 +

おすすめ

転載: blog.csdn.net/woailyoo0000/article/details/101782317