1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > mysql存储过程查询所有表_mysql存储过程利用游标查询每个数据库的所有表

mysql存储过程查询所有表_mysql存储过程利用游标查询每个数据库的所有表

时间:2019-07-07 16:18:15

相关推荐

mysql存储过程查询所有表_mysql存储过程利用游标查询每个数据库的所有表

DELIMITER $

DROP PROCEDURE listAllDB;

CREATE PROCEDURE listAllDB()

BEGIN

DECLARE no_more_record INT DEFAULT 0;

/*定义2个变量:temp用于记录游标每次next的值,schemaName表示将所有temp拼接后的值*/

DECLARE schemaName varchar(500) DEFAULT '';

DECLARE temp varchar(20);

/*将赋值查询返回的所有数据库名赋值给游标*/

DECLARE cur_record CURSOR FOR SELECT `SCHEMA_NAME` FROM `information_schema`.`SCHEMATA`;

/*表示没有数据返回时将这个值设置为1*/

DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_record = 1;

OPEN cur_record; /*接着使用OPEN打开游标*/

FETCH cur_record INTO temp; /*将游标一次next的数据赋值给temp,即一行数据,如果有多列,可以用,分割赋值给多个变量*/

WHILE no_more_record != 1 DO

SET schemaName = concat(temp,',',schemaName);#拼接数据库名

/*查询数据库下面的所有表*/

select table_schema,table_name from information_schema.tables where table_schema=temp;

FETCH cur_record INTO temp;

END WHILE;

CLOSE cur_record; /*用完后记得用CLOSE把资源释放掉*/

select schemaName; /*查看所有的数据库名*/

END $

CALL listAllDB();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。