MySQL 游标
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,光标声明声明光标DECLARE cursor_name CURSOR FOR select_statement这个语句声明一个光标。也可以在子程序中定义多个光标,但是一个块中的每一个光标必须有唯一的名
千家信息网最后更新 2025年01月19日MySQL 游标
光标声明
声明光标
DECLARE cursor_name CURSOR FOR select_statement
这个语句声明一个光标。也可以在子程序中定义多个光标,但是一个块中的每一个光标必须有唯一的名字。
注意:SELECT语句不能有INTO子句。
打开光标
OPEN cursor_name
这个语句打开先前声明的光标。
前进光标
FETCH cursor_name INTO var_name [, var_name] ...
这个语句用指定的打开光标读取下一行(如果有下一行的话),并且前进光标指针。
关闭光标
CLOSE cursor_name
这个语句关闭先前打开的光标。
批量添加索引
共享一个批量添加索引的游标,当一个库中有上百张表结构一样但是名称不一样的表,这个时候批量操作就变得简单了。
#删除创建存储过程DROP PROCEDURE IF EXISTS FountTable;DELIMITER $$CREATE PROCEDURE FountTable()BEGIN DECLARE TableName varchar(64); #声明游标 DECLARE cur_FountTable CURSOR FOR SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='front' AND TABLE_NAME LIKE 'student%'; DECLARE EXIT HANDLER FOR not found CLOSE cur_FountTable; #打开游标 OPEN cur_FountTable; REPEAT FETCH cur_FountTable INTO TableName; #定义预处理 SET @SQLSTR1 = CONCAT('create index Flag on ','`',TableName,'`',' (Flag); '); SET @SQLSTR2 = CONCAT('create index State on ','`',TableName,'`',' (State); '); SET @SQLSTR3 = CONCAT('create index upload on ','`',TableName,'`',' (upload); '); SET @SQLSTR4 = CONCAT('create index ccFlag on ','`',TableName,'`',' (lockFlag); '); SET @SQLSTR5 = CONCAT('create index comes on ','`',TableName,'`',' (comes); '); ###SET @SQLSTR=CONCAT(@SQLSTR1,@SQLSTR2,@SQLSTR3,@SQLSTR4,@SQLSTR5 ); PREPARE STMT1 FROM @SQLSTR1; PREPARE STMT2 FROM @SQLSTR2; PREPARE STMT3 FROM @SQLSTR3; PREPARE STMT4 FROM @SQLSTR4; PREPARE STMT5 FROM @SQLSTR5; EXECUTE STMT1; EXECUTE STMT2; EXECUTE STMT3; EXECUTE STMT4; EXECUTE STMT5; DEALLOCATE PREPARE STMT1; DEALLOCATE PREPARE STMT2; DEALLOCATE PREPARE STMT3; DEALLOCATE PREPARE STMT4; DEALLOCATE PREPARE STMT5; # SELECT @SQLSTR; UNTIL 0 END REPEAT; #关闭游标 CLOSE cur_FountTable;END $$DELIMITER ;CALL FountTable();
这里有几个细节:
在声明游标的时候记得修改自己需要查询的条件
在预处理这里也需要改成对应的字段
在定义条件变量的时候这里我使用的是EXIT就是遇到错误就中断,当然也可以使用CONTINUE 。
注意:由于mysql在存储过程当中无法将查询出来的变量名直接作为表名来用,所以这里要用到动态拼接SQL的方法,但是通常的SET CONCAT的方法并不管用,所以这里就使用了PREPARE来进行预编译。
在定义游标之前所以的定义都只能通过decalre定义,不能使用SET定义!!!!!!
光标
游标
语句
时候
一行
变量
方法
条件
索引
过程
存储
查询
预处理
动态
名字
名称
多个
子句
子程序
字段
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
wos数据库核心合集优点
世界上第一个数据库系统是哪一年
建制镇数据库
潮州原生影视软件开发
软件开发开零税率发票
软件开发 芯片组
暑假记事软件开发
电脑屏幕录像软件开发
简单网络安全问题有哪些
皇后吉祥服务器维护
南京普迪斯软件开发
服务器游戏免费下载
织梦的数据库在哪里
mysql数据库财务应用
软件开发都要学习哪些技能
把项目部署到服务器有什么用
服务器和光纤有什么区别
大型项目数据库
大族激光软件开发实习待遇
山西省的网络安全案例
传统网络技术发展趋势
软件开发指定时间
网络安全隐私原因
推荐网络技术培训费用
校园安全网络安全的总结
软件开发快照是什么意思
搜索有没有网络安全手抄报该写字
网络安全标准的典型案例
excel怎么统计的数据库
网络安全标识算法