gpt4 book ai didi

mysql - 如何执行存储在 MySQL 表列中的查询?

转载 作者:可可西里 更新时间:2023-11-01 07:24:45 24 4
gpt4 key购买 nike

mysql> select * from CT;

| CID | MID | REPORT_QUERY |
| 1 | 1 | select * from emp; |
| 2 | 2 | select * from student; |

2 rows in set (0.00 sec)

我想在 REPORT_QUERY 列中执行查询。

DELIMITER //
CREATE PROCEDURE TRYct()
BEGIN
SET @str=(SELECT GROUP_CONCAT(REPORT_QUERY SEPARATOR ' ') FROM CT);
PREPARE q from @str;
EXECUTE q;
END //
DELIMITER ;

我使用这段代码,但如果我的表中只有一个查询,它就可以工作。如果有两个查询比它给出一个错误。

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from student' at line 1

问题出在哪里?帮助我。

最佳答案

您可以使用游标获取CT 表上的每个REPORT_QUERY,并使用准备好的语句执行:

delimiter $$
drop procedure if exists run_queries$$
create procedure run_queries()
begin

declare s_query varchar(255);

declare done bool default false;
declare c_queries cursor for
select REPORT_QUERY from CT;
declare continue handler for not found set done = true;


open c_queries;
read_loop: loop

fetch c_queries into s_query;
if done then
leave read_loop;
end if;

-- run the query
set @sql = s_query;
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
end loop;

end$$

创建过程后,您可以调用如下:

调用 run_queries();

就是这样。

关于mysql - 如何执行存储在 MySQL 表列中的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43802453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com