在存储过程中用mysql编写准备好的语句

在存储过程中用mysql编写准备好的语句,mysql,stored-procedures,prepared-statement,Mysql,Stored Procedures,Prepared Statement,当我调用下面的SP时,MySQL workbench中出现以下错误: 错误代码1064:MySQL语法有错误;检查与MySql服务器版本相对应的手册,以了解在第1行的test_28_05_2018附近使用的正确语法 有人能帮忙写下正确的StoredProc吗 call execSql(concat('test_',(select DATE_FORMAT(curdate(),'%d_%m_%Y')))); DELIMITER // CREATE PROCEDURE execSql (IN sql

当我调用下面的SP时,MySQL workbench中出现以下错误:

错误代码1064:MySQL语法有错误;检查与MySql服务器版本相对应的手册,以了解在第1行的test_28_05_2018附近使用的正确语法

有人能帮忙写下正确的StoredProc吗

call execSql(concat('test_',(select DATE_FORMAT(curdate(),'%d_%m_%Y'))));

DELIMITER //
CREATE PROCEDURE execSql (IN sqlq VARCHAR(5000)) 
BEGIN
  SET @sqlv=sqlq;
  PREPARE stmt FROM @sqlv;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END //
DELIMITER ;

你能告诉我们你想完成什么吗?另外,那个日期格式让我很难过。我正在尝试在SP中重命名表名,我在某个地方读到了我们可以使用预先准备好的语句进行重命名的内容。下面是SP:DELIMITER//CREATE PROCEDURE proc_name BEGIN DECLARE student_table varchar60;SET@currentDate=选择日期\u FORMATcurdate,“%d\u%m\u%Y”从双;设置@student\u table=concat'student\u table',@currentDate;创建表student\u new like student;将表student重命名为student_表;将表student\u新重命名为student;结束//分隔符;我不处理存储过程,所以请原谅我在这里偏离了正轨,但在我看来,您的过程execSql似乎执行发送给它的任何语句。您要发送的语句test\ux不是有效的SQL语句。这就是错误。注释中的过程更像是创建表的过程!也许你可以试试?