sql中的儲存過程裡怎麼寫事務回滾啊?

時間 2023-03-09 20:55:09

1樓:匿名使用者

create proc [dbo].[notice_delete] -同時刪除該通知書和對應的節點。

@tbl varchar(30),@pid intas begin

declare @tblname varchar(30) ;

declare @sql varchar(1000) ;

set @tblname = tbl

set @sql = delete ' tblname + where id ='

+ convert(varchar(10), pid)begin tran --開始事務。

exec ( sql

if ( rowcount = 0 ) 執行結果影響行數為0beginrollback tran --回滾。

endelse

begindelete from tbl_treenoticewhere purposeid = pidif ( rowcount = 0 ) 執行結果影響行數為0beginrollback tran --回滾。

endelse

begincommit tran --提交事務。

endendend

2樓:匿名使用者

直接在儲存過程結束之前新增以下**:

exception when others then rollback;

解釋:以上語句的意思是當出現任何錯誤的時候,直接回滾整個事務。

備註:儲存過程中建議沒有特殊需求的情況下,在執行結束之前不要進行commit,否則在中途提交,後面的**儲存,只能回滾到commit的位置。

什麼是sqlserver事務處理和事務回滾?

3樓:手機使用者

事務處理是指由一些列的的資料庫操作完成乙個事務的過程。

當乙個事務的某乙個操作發生問題時,整個事務可以回滾掉,就像沒有做任何操作一樣。這就是事務回滾。

如果乙個事務的所有操作均成功,則就可以提交事務,保證事務的完整性。

應用程式主要通過指定事務啟動和結束的時間來控制事務。

以ms sql server的transac-sql語言為例,事務啟動:begin tran [ saction ] transaction_name | tran_name_variable [ with mark [ description' ]結束事務可以使用 commit 或 rollback 語句結束事務。

1 事務的提交。

begin transaction t1

/* 當所有成功操作完成,提交事務 */

commit tran t1

2 事務的回滾。

begin transaction t1

/* 當發生錯誤或事務被取消, 回滾事務 */

sql儲存過程中如何使用declare有的儲存過程宣告了,有的沒有宣告。請回答的詳細點。。謝謝

如果你把儲存過程看作是批處理語句就好理解多了!儲存過程只不過是乙個帶著名稱的sql批處理語句,如果在整個過程中需要變數時就是可以宣告,但該變數宣告後只能存活在批處理 儲存過程 的執行中,執行完畢後就會消失,這種宣告的格式就是 declare 變數名 型別 其中變數名為了與資料庫中的列名相互區別,所以...

SQL裡中儲存過程和觸發器,如何建立

觸發器是一種特殊的儲存過程,2.觸發器是在對錶進行插入 更新或刪除操作時自動執行的儲存過程 3.觸發器通常用於強制業務規則 4.觸發器是一種高階約束,可以定義比用check 約束更為複雜的約束 5.可執行複雜的sql語句 if while case delete 觸發器 insert 觸發器 upd...

如何從sql2019儲存過程中獲取特定的字串

sql也可以拆分的,sqlserver快速查詢所有儲存過程中是否包含某字元 將text替換成你要查詢的內容 select name from sysobjects o,syscomments swhere o.id s.id and text like text and o.xtype p 將tex...

在sql儲存過程中rowcount0是什麼意思

rowcoun 返回受上一語句影響的行數。rowcount 0 查詢返回的記錄數不為零。1 rowcount 返回受上一語句影響的行數。2 語法 rowcount 返回型別 integer 3 注釋 任何不返回行的語句將這一變數設定為 0 如 if 語句。4 示例 下面的示例執行 update 語句...

sql查詢資料庫中哪些儲存過程包含指定字串

select b.name a.textfrom dbo.syscomments a left join dbo.sysobjects b on a.id b.id where b.xtype p and a.text like 儲存過程內容 請採用以上sql指令碼 將text替換成你要查詢的內容 ...