如何使用用户变量在存储过程中执行预准备语句?

时间:2015-03-01 12:09:32

标签: mysql stored-procedures

我正在尝试编写一个存储过程来创建一个临时表,其中包含基于2个表的链接数据创建的变量列。我使用游标中的查询将变量字段添加到临时表中,并尝试使用此循环将字段添加到临时表:

OPEN acc_data_fields;

PREPARE stmt FROM 'ALTER TABLE `test`.`tmp_123` ADD COLUMN `?` VARCHAR(255) AFTER `?`';

add_tagheads: LOOP

 FETCH acc_data_fields INTO field_tmp;

IF exit_flag = 1 THEN

    LEAVE add_tagheads;

 END IF;

 EXECUTE stmt USING @field_tmp, @add_after;

 SET @add_after = @field_tmp;
END LOOP add_tagheads;
DEALLOCATE PREPARE stmt;
CLOSE acc_data_fields;

存储过程在EXECUTE失败,错误

Sql Error 1210 Incorrect Arguments to EXECUTE

我通过类似的帖子阅读,但无法弄清楚是什么错。 数据库是Mysql 5.1。有什么建议吗? 刚刚发现acc_data_fields由于某种原因是空的(虽然我执行SQL它返回5行。调查......

1 个答案:

答案 0 :(得分:0)

尝试:

...
-- PREPARE stmt FROM 'ALTER TABLE `test`.`tmp_123` ADD COLUMN `?` VARCHAR(255) AFTER `?`';
   PREPARE stmt FROM 'ALTER TABLE `test`.`tmp_123` ADD COLUMN ? VARCHAR(255) AFTER ?';
...