我在这里运行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;
答案 0 :(得分:1)
您只能执行一条语句,然后先执行放置,然后再执行创建。
答案 1 :(得分:0)
您尝试过这个吗?
SET @c:= CONCAT('如果存在tempdb.cohort_month,则删除临时表;如果不存在tempdb.cohort_month,则创建临时表;从ba_dev.invoice_中选择*; EXTRACT(YEAR_MONTH> FROM @STARTDATE),'_ ongoing_STEP2 ;');