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
column.
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
哪里有问题 ?帮我。
您可以使用光标来获取每个REPORT_QUERY
on CT
表,并使用准备好的语句执行该表:
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();
就是这样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)