如何在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
因此,如何能我会摆脱....
答
你是缺少prepare
语句来执行动态查询。
// your transfer variable query ...
PREPARE stmt FROM @transfer;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
+0
不工作,它提供了查询:EXECUTE语句 错误代码:1243 未知事先准备好的声明赋予执行 执行时间处理(语句):0秒 转换时间:0秒 总时间:0秒 –
我建议*检查对应于您的MySQL服务器版本的手册,以获得*'EXECUTE'的正确语法。对于MySQL 5.7,例如https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html。 – LSerni