【发布时间】:2011-12-15 19:35:39
【问题描述】:
我正在遍历数据库中的表定义并提取 DDL,以便能够为软件测试目的创建表副本的“黄金数据”集。我有下面的代码,它可以将 DDL 提取到一个引发 ORA-06502 错误的表中。问题是,我已将 DDL 返回的变量定义为 CLOB,它应该足够大。代码如下:
create or replace
procedure gettabledescription as
current_date_time varchar2(32);
sql_statement varchar2(200);
ddl_return clob;
new_ddl clob;
BEGIN
DBMS_OUTPUT.ENABLE;
current_date_time:= to_char(sysdate,'MM/DD/YYYY - HH24:MI:SS');
dbms_output.put_line(current_date_time);
for cursor_rec in (select * from user_objects where object_type='TABLE' and object_name not like 'TM%' and object_name not like 'TZ_%' and object_name not like 'EXT_%' and object_name not like 'RPT_%' and object_name not like 'ETL_%') loop
sql_statement := 'select dbms_metadata.get_ddl(''TABLE'',' || '''' || cursor_rec.object_name || '''' || ') from dual';
execute immediate sql_statement into ddl_return;
**error thrown here** new_ddl := replace(ddl_return,TO_CHAR(cursor_rec.object_name),'QA_' || TO_CHAR(cursor_rec.object_name));
dbms_output.put_line(new_ddl);
end loop;
END GETTABLEDESCRIPTION;
我不明白为什么会出现这个错误。
【问题讨论】:
-
1) 在哪一行抛出错误?