我想写一个过程,在这个过程中按月收集数据并存储在一个表中。所以我要做的是将作为参数传递的月份的名称附加到表的名称中。
--这是我写的程序。
CREATE procedure month_data(IN month varchar(20))
BEGIN
declare monthName varchar(255);
set @monthName := concat('CREATE table IF NOT EXISTS monthName_"',month,'"
select * from dup_activity_log where monthname(cur_date)="',month,'";');
prepare stmt from @monthName;
execute stmt;
END //
/我得到一个运行时语法错误,但我不知道我应该做什么来删除它。我是mysql的新手,所以提前谢谢你的帮助/
错误1064(42000):您的sql语法有错误;查看与您的mysql服务器版本对应的手册,以获得正确的语法,以便在第1行的“june”select*from dup\u activity\u log where monthname(cur\u date)=“june”'附近使用
2条答案
按热度按时间anauzrmj1#
最好使用参数占位符
?
为了WHERE
子句而不是使用引号:然后在执行时传递参数:
请参阅程序外的完整代码:
7y4bm7vi2#
在表名的一部分周围有一些不必要的双引号。表名和select的开头之间应该有一个空格。试试这个(
''
被视为嵌入字符串中的单引号):