--當兩個或兩以上的操作要麼都執行,要麼都不執行時要用事務。
1. 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 @cusno = 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 @cusno = cusno
from crmpsprojectm
where projno = @projno
--得到crmpscontact中某專案號對應的客戶號
update crmpscontact
set cusno = @cusno
where projno = @projno
--執行錯誤回滾
if @@error!=0
begin
rollback tran
return
endend
--提交所有變更
commit tran
--關閉游標
close crmpscontact_cursor
--釋放游標
deallocate crmpscontact ......
SQL游標原理和使用方法
在 資料庫開發過程中,當你檢索的資料只是一條記錄時,你所編寫的事務語句 往往使用select insert 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。1.1 游標和游標的優點 在資料庫中,游標是乙個十分重要的...
SQL游標原理和使用方法
在資料庫開發過程中,當你檢索的資料只是一條記錄時,你所編寫的事務語句 往往使用select insert 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。1.1 游標和游標的優點 在資料庫中,游標是乙個十分重要的概...
SQL游標原理和使用方法
在資料庫開發過程中,當你檢索的資料只是一條記錄時,你所編寫的事務語句 往往使用select insert 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。1.1 游標和游標的優點 在資料庫中,游標是乙個十分重要的概...