我想编写一个存储过程,它遍历数据库中的所有表并执行一些操作。

drop procedure if exists p2;

DELIMITER //

CREATE PROCEDURE `p2` ()
LANGUAGE SQL
DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'A procedure'
BEGIN
declare cur1 cursor for
    show tables from my_database_name
END//


call p2;

这不起作用;我收到一个错误,说我在“show tables from my_database_name”附近的SQL语法中有错误
当然,我不想做show tables from my_database_name我真的想说show tables from database()show tables from (select database()),两者都不起作用。
帮忙?我可以直接用SQL来完成这项工作吗?还是我需要首先从程序中调用show tables,然后在那里迭代结果集?如何创建一个游标来捕获database()show tables之类的值?

最佳答案

show tables不是一个SQL查询-它是以不同的方式处理的-但是您可以查询the tables in the information_schema database。你需要像SELECT table_name FROM information_schema.tables WHERE table_schema='db_name'这样的东西。

关于mysql - MySQL:声明“显示表”的游标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9285338/

10-13 00:53