4
我打电话,从触发存储过程,我得到以下错误:调用存储过程包含动态SQL从触发
Dynamic SQL is not allowed in stored function or trigger
为什么会出现这种情况,动态SQL被存储过程中执行,这是从Trigger调用。也许这是问题,如果有的话,是否有任何解决方法?
编辑(添加的代码):
这里是触发从主表:
-- Trigger DDL Statements
DELIMITER $$
USE `TestaDataBase`$$
CREATE TRIGGER `TestaDataBase`.`UpdateAuxilaryTable`
AFTER INSERT ON `MainTable` FOR EACH ROW
BEGIN
/* Here we call stored procedure with parameter id of newly inserted row. */
CALL TestProcedure('Year', 'Person', 'IdPerson', NEW.IdData);
END
$$
这里是存储过程是从触发称为:
DELIMITER $$
CREATE PROCEDURE `TestDataBase`.`TestProcedure` (IN attribute CHAR(64), IN tableName CHAR(64), IN IdTable CHAR(64), IN IdLastRow MEDIUMINT)
BEGIN
DECLARE selectedValue MEDIUMINT;
SET @statement = CONCAT('SELECT ', attribute, ' FROM ', tableName, ' WHERE ', IdTable, ' = ', IdLastRow, ' INTO selectedValue');
PREPARE statementExecute FROM @statement;
EXECUTE statementExecute ;
...
...
END
你能告诉我们一些代码吗? – jcho360 2012-07-12 17:54:03
我已添加代码。我希望现在更清楚。 – 2012-07-12 19:26:38
我遇到同样的问题,您是否找到解决方案? – zidarsk8 2012-09-07 03:32:41