mysql存储过程-游标

-- 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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值