如何将简单的 SQL 查询存储到用户定义的变量中并在 MySQL 中执行?

Posted

技术标签:

【中文标题】如何将简单的 SQL 查询存储到用户定义的变量中并在 MySQL 中执行?【英文标题】:How to store a simple SQL query into user defined variable and execute it in MySQL? 【发布时间】:2018-07-23 10:08:15 【问题描述】:

我是 mysql 新手,我正在尝试将 sql 语句存储到变量中:

SET @sql = 'SELECT * FROM tbl_tableName';
  SELECT @sql;

它正确执行,并给我结果:

但是如何才能看到存储在那个变量中的sql语句的结果呢?如果我执行它,它会给出一个错误。

SET @sql = 'SELECT * FROM tbl_defects';
  SELECT @sql;
  PREPARE stmt FROM @sql;
  EXECUTE stmt;

错误:

致命错误:未捕获的错误:调用成员函数 getClauses() on 空入 /opt/lampp/phpmyadmin/vendor/phpmyadmin/sql-parser/src/Utils/Query.php:567 堆栈跟踪:#0

请任何人帮助我执行存储在变量中的sql语句(想要执行/检查存储在该变量中的结果。我知道我们可以直接运行并在SQL提示符下检查结果)?

【问题讨论】:

【参考方案1】:

要获得该变量的结果,您必须首先创建一个stored procedure 并执行该过程,您将得到答案。

创建存储过程:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN  
SET @sql = ('SELECT * FROM tbl_defects');
  SELECT @sql;
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;

希望对您有所帮助。

【讨论】:

有没有什么方法可以不用存储过程来执行?

以上是关于如何将简单的 SQL 查询存储到用户定义的变量中并在 MySQL 中执行?的主要内容,如果未能解决你的问题,请参考以下文章

如何将选择结果分配给变量?

PL/SQL 将行存储到变量中并在 for 循环中使用它们

如何使用python3将输入数据存储到文本文件中并打印数据输出?

如何将变量连接到 SQL 中的查询中?

保存在变量中并乘以双值查询结果 C#/MySql

从 PL/SQL 中的查询加硬编码变量返回用户定义的表