Jan*_*rsh 4 mysql stored-procedures group-concat sql-server-group-concat
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)
Run Code Online (Sandbox Code Playgroud)
我想在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 ;
Run Code Online (Sandbox Code Playgroud)
我使用此代码,但如果我的表中只有一个查询,它可以工作.如果有两个查询而不是它给出错误.
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
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿 ?帮我.
您可以使用光标获得每REPORT_QUERY对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 Code Online (Sandbox Code Playgroud)
创建过程后,您可以调用如下:
调用run_queries();
而已.
小智 0
据我了解,您的问题是您需要运行存储在表单表列中的查询SQL。
在这里您可以获取查询表单table column并在 mysqli 中执行它们。
SQL EMPLOYEE TABLE [在执行期间由查询表动态调用]
PHP SQL 代码:`
<?php
$link = new mysqli ('localhost','root','admin','demo');
if($link->connect_error){
die ("Connection Failed".$link->connect_error);
}
//YOU NEED THIS AS YOU NEED TO ACCESS THE COLUMN DATA IN TABLE
$sql = "SELECT * FROM querytable WHERE id=1";
if($res = $link->query($sql)){
//IF THE ROW EXISTS
if($res->num_rows > 0){
while($row = $res->fetch_assoc()){
$query = $row['report_query']; //HERE IS THE SQL QUERY STORED IN TABLE , WHICH IS STORED IN ANOTHER VARIABLE
$result = $link->query($query); // NOW EXECUTE THE QUERY
if($result->num_rows > 0){
?>
<table border="1" cellpadding="10">
<tr>
<th>First Name</th>
<th>Last Name</th>
</tr>
<?php
while($rows = $result->fetch_assoc()){
//DISPLAY RESULTS HERE
?>
<tr>
<td><?php echo $rows['first_name'];?></td>
<td><?php echo $rows['lastname'];?></td>
</tr>
<?php
}
?>
</table>
<?php
}
}
}
}
else
{
echo $link->error;
}
?>
Run Code Online (Sandbox Code Playgroud)
`
| 归档时间: |
|
| 查看次数: |
2945 次 |
| 最近记录: |