存储过程例子 易懂
BEGIN
DECLARE proname varchar(100); -- 存储过程名称
DECLARE result varchar(1); -- 执行结果
DECLARE tablename varchar(100); -- 表名
-- 定义当前任务出现执行异常时 继续执行其他任务
-- 1, EXIT: 发生错误时退出当前代码块(可能是子代码块或者main代码块)
-- 2, CONTINUE: 发送错误时继续执行后续代码
-- v_result = '2' 意思为出现异常时设置值为2
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION set v_result = '2';
BEGIN
SET proname = 'pro1';
BEGIN
-- 设置成不自动提交事务 如果autocommit=1就是自动提交
SET SESSION autocommit=0;
SET tablename = 'table1';
SET result = 1;
-- 要模拟异常可以把这里的sql语句写错 比如把tablename写错
-- 这里写你的主题sql语句 比如
select * from tablename where xx=1;
-- 如果出现异常 那记录错误日志 ,否则提交
IF result = 2 THEN
SELECT NOW(),result; -- 调试时输出一些信息 以便观察执行了哪个分支 完成调试可以去掉
ROLLBACK;
-- 记录日志
insert into tablename (xx, xx) values (xx, xx);
ELSE
SELECT result; -- 调试时输出一些信息 以便观察执行了哪个分支 完成调试可以去掉
COMMIT;
END IF;
-- 设置回默认值
set session autocommit=DEFAULT;
END;
END;
END