DECLARE
sqltext varchar(500); month varchar(5);
BEGIN
select to_char(to_char((trunc(sysdate, 'mm')- interval '2' month),'mm'), '09') into month  from dual;
sqltext:='truncate table XPrice_SRChannelHis_'||month||' drop storage';
dbms_output.put_line (sqltext);
execute immediate sqltext;
end;
 
ORA-03291: ??????? - ?? STORAGE ???
ORA-06512: ? line 8

解决方案 »

  1.   

    你先别用动态语句,直接用truncate table 表名试试,报错有可能你那表有外键关联或什么的,造成truncate不了
      

  2.   

    直接执行truncate table tablename是可以的
      

  3.   

    你把sqltext打印出来,然后把这打印出的语句去执行,看有没有错?
      

  4.   

    dbms_output.put_line (sqltext);
    输出的SQL语句单独执行试试
      

  5.   

    不知道为什么,month不管怎么声明,month的值前面都有空格,最后实在没辙了。sqltext:='truncate table XPrice_SRChannelHis_'||trim(month);这样处理之后就正常了。