在Alter Table语句中使用变量作为表名

时间:2014-05-06 12:11:49

标签: oracle sqlplus

我正在尝试使用类似的变量来重命名和删除表:

variable new_table varchar2(30);
exec :new_table := 'TABLE_LERO_' || TO_CHAR (SYSDATE, 'MM_DD_YYYY');
ALTER TABLE TABLE_LERO RENAME TO :new_table;

但是sqlplus抱怨:

ORA-00903: invalid table name

任何人都可以帮助或解释为什么这不起作用以及如何做同样的工作?

谢谢!

1 个答案:

答案 0 :(得分:3)

declare
   l_newtablename varchar2(50);
begin
   l_newtablename := 'TABLE_LERO_' || TO_CHAR (SYSDATE, 'MM_DD_YYYY');
   execute immediate 'ALTER TABLE TABLE_LERO RENAME TO ' || l_newtablename;
end;
/