Mysql儲存過程包含事務,且傳入sql資料執行

2021-12-30 13:04:29 字數 713 閱讀 4323

有這樣乙個需求,要求在mysql儲存過程中使用到事務,而且執行的是動態的sql語句

**如下:

begin

declare in_data text;

/** 標記是否出錯 */

declare errno int default '0';

/** 如果出現sql異常,則將t_error設定為1後繼續執行後面的操作 */

declare continue handler for sqlexception begin rollback;set errno = 1; end;

start transaction;

-- 傳入的語句處理過程

prepare stmt from @in_data;

execute stmt;

if (errno =1) then

rollback;

else

commit;

end if;

select errno;

end呼叫 :set @in_data = 'insert into accounts (`userid`,`password`) value (122222222,2),(22222,11)';

call syn_updata(@in_data);其實這個儲存過程只要是用到事務的地方都可以用到,因為執行的條件是動態的。

MySQL儲存過程 事務transaction

mysql 中,單個 store procedure sp 不是原子操作,而 oracle 則是原子的。如下的儲存過程,即使語句2 失敗,語句 1 仍然會被 commit 到資料庫中 sql view plain copy create table testproc id int 4 primary...

mysql 儲存過程與事務

最近在工作中要實現乙個功能,在乙個php檔案裡有乙個流水號的變數,每次執行這個php的檔案,這個流水號的變數都得不一樣,我就想到用mysql的自增來解決,我寫了乙個儲存過程,create procedure mqsearch in userid int,in type int,out lshs bi...

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...