现在有一个表tmp_200706,后面跟的是当月时间,要写在存储过程里,表名会跟着时间变,如何实现?当月时间可以用写到一个变量中pvi_date select to_char(sysdate,'yyyymm') into pvi_date from dual;但之后如何把这个变量跟tmp_ 联系起来?
动态SQL EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM IMP_'||变量名 INTO pvi_date;
我先想了个办法, select 'tmp_'||to_char(sysdate,'yyyymm') into v_table from dual;但是, select * from v_table where ...... 这个v_talbe变量也不能用在这个sql里,好像变量是不能跟在from后面的,但我的表名总是 根据时间在变化的,该如何是好?
按照 ATGC(花开蝶舞,木秀鸟栖) 的方法,过程编译没有报错了,但执行起来有些问题,EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM IMP_'||变量名 || 'where ...' INTO pvi_date;我的where里面用到一个游标,就是报游标的错,但编译没有问题
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM IMP_'||变量名 INTO pvi_date;
select 'tmp_'||to_char(sysdate,'yyyymm')
into v_table
from dual;但是,
select * from v_table
where ......
这个v_talbe变量也不能用在这个sql里,好像变量是不能跟在from后面的,但我的表名总是
根据时间在变化的,该如何是好?