【发布时间】:2013-03-18 16:13:00
【问题描述】:
我知道这是一个不好的例子,但我正在尝试简化事情,所以请耐心等待我编写这段代码的迂回方式。假设我将查询存储在数据库中,例如
查询表
id query
1 concat('SELECT * FROM table1 WHERE year = ', _year, 'order by name')
2 concat('SELECT * FROM table2 WHERE year = ', _year, 'order by name')
我想运行以下例程
DECLARE _year;
SET _year= "2013";
SET @SQL = (SELECT query FROM queries WHERE id = 1);
PREPARE stmt FROM @SQL;
EXECUTE stmt;
这是我目前拥有的,但它不起作用。我正在尝试从数据库中选择一个查询,将一些变量传递给它,然后运行查询。
【问题讨论】:
-
MySQL 不允许在存储过程中使用动态 SQL。
-
那么任何人都可以用不同的方式为我指明正确的方向,但仍然需要在数据库中存储查询和变量,然后从中构建语句。