准备STMT语句,给出语法错误

时间:2019-10-31 09:38:14

标签: mysql

我在这里运行prepare stmt时遇到语法错误。我尝试手动在@c中执行查询,并且该查询有效。不知道为什么stmt给这个错误。 这是我正在使用的代码。

SET @i=24;
SET @Bill_month='2019-01-01';
SET @STARTDATE= date_sub( @Bill_month,interval @i MONTH);
SET @ENDDATE= date_sub( @Bill_month,interval @i - 1 MONTH);
SET @TABLENAME= CONCAT('BA_DEV.INVOICE',MONTH(@Bill_month),'_',@i);
SET @c := CONCAT('DROP temporary TABLE if exists tempdb.cohort_month;

             CREATE temporary TABLE if not exists tempdb.cohort_month
             select * from ba_dev.invoice_',EXTRACT(YEAR_MONTH FROM @STARTDATE),'_ongoing_STEP2;');

PREPARE stmt from @c;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

2 个答案:

答案 0 :(得分:1)

您只能执行一条语句,然后先执行放置,然后再执行创建。

答案 1 :(得分:0)

您尝试过这个吗?

  

SET @c:= CONCAT('如果存在tempdb.cohort_month,则删除临时表;如果不存在tempdb.cohort_month,则创建临时表;从ba_dev.invoice_中选择*; EXTRACT(YEAR_MONTH> FROM @STARTDATE),'_ ongoing_STEP2 ;');