-- 2022-05-03 星期二 1924 mysql存储过程-游标
-- 参考:https://wenku.baidu.com/view/4cc6c15b158884868762caaedd3383c4ba4cb453.html
/**
SHOW CREATE PROCEDURE drop_copy;#查看已经创建的-存储过程
CALL drop_copy();#调用存储过程
-- SHOW PROCEDURE STATUS LIKE 'drop_copy';
*/
drop procedure drop_copy; #删除存储过程
create PROCEDURE drop_copy()
begin
# 声明变量(根据自己的需求去修改),varchar 类型要指定长度
DECLARE merchantName VARCHAR(255); #写自己的注释
#这一行一定要上面的可以根据自己的逻辑写多少都行
DECLARE done INT DEFAULT 0;
DECLARE cur CURSOR FOR
#开始执行查询语句并把查询出的值赋值给变量,类型与下面这种,记着一定要以 ";"结尾。
select table_name as merchantName from information_schema.tables
where table_schema ='group_ad' and table_name like '%_copy1';
#游标执行完,即遍历结束。设置done的值为1
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN cur; #开启游标
posLoop:LOOP #执行循环
FETCH cur INTO merchantName; #要和声明的变量对应上不能少写,done除外
IF done=1 THEN LEAVE posLoop; #如果done的值为1,即遍历结束,结束循环
END IF;#注意 if语句需要添加END IF结束IF
select now();
set @stmt = concat('drop table ',merchantName);# 定义语句
PREPARE stmt from @stmt; #预定义sql语句,从变量中获取
EXECUTE stmt; #执行sql语句
DEALLOCATE PREPARE stmt; #释放资源,后续还可以使用
END LOOP posLoop;#关闭循环
CLOSE cur;#关闭游标
end;
mysql存储过程-游标
最新推荐文章于 2023-03-08 10:19:23 发布