如何在MySQL中执行存储在变量中的查询?

问题描述:

我试图执行在SQLyog的这是如何在MySQL中执行存储在变量中的查询?

SET @adm_code = 12781; 
SET @transfer = (SELECT MAX(id) FROM std_transfer_history AS sth 
WHERE admission_code = @adm_code); 
EXECUTE @transfer; 

查询,但它给出了一个错误

Query: execute @transfer 

Error Code: 1064 
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 '@transfer' at line 1 

Execution Time : 0 sec 
Transfer Time : 0 sec 
Total Time  : 0 sec 

因此,如何能我会摆脱....

+0

我建议*检查对应于您的MySQL服务器版本的手册,以获得*'EXECUTE'的正确语法。对于MySQL 5.7,例如https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html。 – LSerni

你是缺少prepare语句来执行动态查询。

// your transfer variable query ... 

PREPARE stmt FROM @transfer; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
+0

不工作,它提供了查询:EXECUTE语句 错误代码:1243 未知事先准备好的声明赋予执行 执行时间处理(语句):0秒 转换时间:0秒 总时间:0秒 –