使用SQL中的迴圈,可以實現許多我們需要的操作,比如SQL更新操作。下面就為您介紹使用遊標迴圈進行SQL更新插入的SQL語句寫法,希望對您深入學習SQL更新有所幫助。
- --開始事務
- BEGIN TRAN
- --不顯示計數資訊
- SET NOCOUNT ON
- DECLARE @ProjNo varchar(50),@CusNo varchar(50)
- --宣告遊標
- DECLARE CRMPSContact_cursor CURSOR FOR
- SELECT ProjNo
- FROM CRMPSContact
- WHERE ProjNo>0
- --開啟遊標
- OPEN CRMPSContact_cursor
- --取第一行的值給專案變數: @ProjNo
- FETCH NEXT FROM CRMPSContact_cursor
- INTO @ProjNo
- --取得客戶號
- select @CusNoCusNo = CusNo
- from CRMPSProjectM
- where ProjNo = @ProjNo
- --得到CRMPSContact中某專案號對應的客戶號
- update CRMPSContact
- set CusNo = @CusNo
- where ProjNo = @ProjNo
- --執行錯誤回滾
- if @@error!=0
- begin
- rollback tran
- return
- end
- --移動遊標,其它所有行更新操作(當到結尾時退出)
- WHILE @@FETCH_STATUS = 0
- BEGIN
- --遊標移到下一行
- FETCH NEXT FROM CRMPSContact_cursor
- INTO @ProjNo
- --取得客戶號
- select @CusNoCusNo = CusNo
- from CRMPSProjectM
- where ProjNo = @ProjNo
- --得到CRMPSContact中某專案號對應的客戶號
- update CRMPSContact
- set CusNo = @CusNo
- where ProjNo = @ProjNo
- --執行錯誤回滾
- if @@error!=0
- begin
- rollback tran
- return
- end
- END
- --提交所有變更
- COMMIT TRAN
- --關閉遊標
- CLOSE CRMPSContact_cursor
- --釋放遊標
- DEALLOCATE CRMPSContact_cursor
- --恢復設定
- SET NOCOUNT OFF
- GO