MySQL 游标
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,光标声明声明光标DECLARE cursor_name CURSOR FOR select_statement这个语句声明一个光标。也可以在子程序中定义多个光标,但是一个块中的每一个光标必须有唯一的名
千家信息网最后更新 2025年11月06日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安全错误
数据库的锁怎样保障安全
服务器机柜回收
手机软件的数据库是什么
华为软件开发流程几个字母
计算机软件开发系学什么
软件开发业务谁去交接
app网络安全评估
浙江超频服务器近期价格
中国航天科技和世界互联网大会
智能网络技术销售价格
数据库开墙
python数据库画图
网络安全靠你我观后感800字
免费服务器安全卫士
专业软件开发价格服务标准
长顺网络技术有限公司
国家网络安全宣传周知识教育
客户端登录服务器怎么登
服务器错误-403
国家标准网络安全工程
安装5g服务器需要换光缆吗
ssh访问服务器失败用户被拒绝
佰商互联网科技有限公司
汕头仓库管理软件开发
手抄报网络安全黑白简单
java开源服务器框架
文明重启怎么自己弄个服务器
数据库怎么跟别的用户建立连接
网络技术咨询服务电话
时时彩统计软件开发
sql 数据库接口