我在PS服务器上有7个表,他们拥有过去3年的数据(数十亿条记录)。要求是将所有数据移动到备份表,除了上个月的数据。所以我们接近:
这样数据处理速度很快。
我尝试使用以下查询来更改表名但它没有用。任何人都可以帮忙。这是当务之急。
declare
sql_stmt varchar2(1000);
cursor c1 is select table_name from staging_clear;
type t1 is table of c1%rowtype;
curtype t1;
begin
open c1;
fetch c1 bulk collect into curtype;
for i in 1..curtype.count loop
sql_stmt:= 'begin
alter table '||curtype(i).table_name||' rename to '|| curtype(i).table_name||'_bkp';
dbms_output.put_line(sql_stmt);
execute immediate sql_stmt;
dbms_output.put_line(sql_stmt);
end loop;
end;
错误报告:
ORA-06550:第2行第11列:PLS-00103:遇到符号 " ALTER"当期待以下之一时:begin case declare exit for goto if loop mod null pragma raise返回选择更新时使用 << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe ORA-06512:at line 13 06550. 00000 - "行%s,列%s:\ n%s" *原因:通常是PL / SQL编译错误。
答案 0 :(得分:0)
声明被破坏了:只需写下“ALTER TABLE'并忘掉了“开始”
sql_stmt:= 'alter table '||curtype(i).table_name||' rename to '|| curtype(i).table_name||'_bkp';