用儲存過程處理複雜的業務時,可能涉及到對多張**的操作,在任乙個步驟出了問題,就需要對前面的操作回滾。舉例實現:
1drop
procedure
ifexists
pro_test;
2create
procedure
pro_test3(
4 para_a varchar(50
),5 para_b varchar(50)6
)7begin
8declare result_code integer
default
0; --
定義返回結果並賦初值0
9declare
continue handler for sqlexception set result_code=
1; --
在執行過程中出任何異常設定result_code為1
10declare
continue handler for
not found set result_code =
2; --
如果表中沒有下一條資料則置為2
11 ##有對應的異常時候會跳到這裡執行語句,如果是continue 就會繼續異常**處向下執行
12 start transaction; --
開始事務
1314
/*15
* 這裡寫具體的業務處理...
16* 業務處理過程中可以根據實際情況自定義result_code
17*/
1819
if result_code =
1then
--可以根據不同的業務邏輯錯誤返回不同的result_code,這裡只定義了1和0
20rollback
; 21
else
22commit
; 23
endif;24
select
result_code;
25end ;
儲存過程 中的事務 rollback 回滾
在編寫sql server 事務相關的儲存過程 時,經常看到下面這樣的寫法 begin tran update statement 1 update statement 2 delete statement 3 commit tran 這樣編寫的sql存在很大隱患。請看下面的例子 create ta...
MySQL儲存過程事務回滾
sql過程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 delimiter createdefiner root localhost procedure test procedure begin declareerrnoint declarecontinueh...
Mysql過程中區域性事務回滾
label pro begin declare t error integer default 0 declare continue handler for sqlexception set t error 1 異常時設定為1 insert into temp values test test 測試...