MySQL的CONTINUE HANDLER
迁移MySQL业务时,遇到了MySQL的CONTINUE HANDLER FOR not found用法。详情如下:
-- 表DDL
create table t1(c1 int primary key, c2 int);
create table t2(c1 int primary key, c2 int);
-- 数据
insert into t1 values(1,1),(2,2);
insert into t2 values(1,11);
commit;
-- 使用CONTINUE HANDLER的存储过程
DELIMITER $$
CREATE PROCEDURE demo(IN p1 int)
BEGIN
DECLARE s bigint DEFAULT 0;
DECLARE v1 bigint DEFAULT 0;
DECLARE v2 bigint DEFAULT 0;
DECLARE cur1 CURSOR FOR select c2 from t1 where c1=p1;
DECLARE CONTINUE HANDLER FOR not found SET s=1;
OPEN cur1;
r_loop: LOOP
IF s = 1 THEN
LEAVE r_loop;
END IF;
-- 如果游标fetch结果not found,则设置s=1
FETCH cur1 INTO v1;
IF s = 0 THEN
-- 如果查询结果not found,则设置s=1
select c2 into v2 from t2 where c1=v1;
-- 调试:输出v2值
select v2;
-- 调试:输出s值
select s;
END IF;

最低0.47元/天 解锁文章
334

被折叠的 条评论
为什么被折叠?



