【发布时间】:2015-03-11 11:24:21
【问题描述】:
我正在尝试在存储过程中使用 MySQL 准备好的语句。我已经尝试调试这个 CREATE 代码几个小时了,现在很沮丧。
DELIMITER //
DROP PROCEDURE IF EXISTS doSomething//
CREATE PROCEDURE doSomething(IN tblname CHAR(32))
BEGIN
DECLARE str1 TEXT DEFAULT '';
SET str1 = CONCAT("SELECT * FROM ", tblname);
PREPARE stmt1 FROM str1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END//
DELIMITER ;
它抛出了各种“语法”错误。更糟糕的是,确切的错误消息似乎在 phpMyAdmin 和 MySQL 控制台之间有所不同。
请有人帮我查明语法错误。
谢谢。
PS:经过进一步测试...
这似乎有效:
DELIMITER //
DROP PROCEDURE IF EXISTS doSomething//
CREATE PROCEDURE doSomething(IN tblname CHAR(32))
BEGIN
SET @str1 = CONCAT("SELECT * FROM ", tblname);
PREPARE stmt1 FROM @str1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END//
DELIMITER ;
唯一的区别是@variable 与DECLARE 在第一种形式中的使用。嗯,DECLARE 这里有什么问题?
【问题讨论】:
标签: mysql stored-procedures syntax-error prepared-statement