Mysql 動態執行多條update語句,帶事務的
阿新 • • 發佈:2019-01-27
create procedure P_CallSql_Tran(IN vi_sql text,in vi_splitchar varchar(20),OUT vo_code VARCHAR(20),out vo_msg text)
BEGIN
DECLARE v_sqltemp text;DECLARE v_singleSql text;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
SET vo_code='500';
SET vo_msg='操作失敗!';
END;
DECLARE EXIT HANDLER FOR SQLWARNING
BEGIN
ROLLBACK;
SET vo_code='501';
SET vo_msg='資料格式錯誤,請檢查sql語句的正確性!!!';
END;
SET v_sqltemp=vi_sql;
SET v_singleSql='';
SET AUTOCOMMIT=1;
START TRANSACTION;
WHILE LENGTH(v_sqltemp)>0 DO
SET v_singleSql=substring_index(v_sqltemp,vi_splitchar,1);
SET @sqlStr=concat(v_singleSql,';');
PREPARE stmts FROM @sqlStr;
EXECUTE stmts;
SET v_sqltemp=REPLACE(v_sqltemp,concat(substring_index(v_sqltemp,vi_splitchar,1),vi_splitchar),'');
END WHILE;
COMMIT;
SET vo_code='000';
SET vo_msg='操作成功!';
END