当使用游标在sys.odcivarchar2list中批量收集结果时,我收到此错误:ORA-06502:PL / SQL:数字或值错误:批量绑定:截断绑定我的循环执行多次没有错误但仅针对特定我将所有数据收集到varchar2列表中的表我收到此错误 . 我用过这段代码:
declare
filehandle1 utl_file.file_type;
myquery varchar2(4000) := 'select column1 ||''~''|| column2 from mytable';
mycursor sys_refcursor;
myresults sys.odcivarchar2list;
begin
filehandle1 := utl_file.fopen ('D42', 'mydata', 'w');
open mycursor for myquery;
loop
fetch mycursor bulk collect into myresults;
if myresults.count>0 Then
for idx in myresults.first..myresults.last loop
utl_file.put_line(filehandle1, myresults(idx));
end loop;
End if;
exit when mycursor%notfound;
end loop;
close mycursor;
utl_file.fclose(filehandle1);
end;
这将返回超过100个表的结果,但只有一个表崩溃 . 预先感谢您的帮助
1 回答
您需要将每个CLOB值写入单独的文件中,并将该文件名作为主数据记录的一部分包含在内 . 像这样的东西:
有一个
data_file
具有所有非CLOB数据,包括您编写的行's CLOB to. The filename can be anything as long as it'唯一的单个文件的名称;我使用了rownum
,但是如果它有一个主键ID,你可以使用它的主键ID .使用虚拟表创建为:
..这创建
mydata
包含:和文件
column2_2
和column2_3
以及相应的CLOB值 .然后,如果我运行带有该数据文件的SQL * Loader和可用的CLOB文件,以及控制文件:
...新表填充为:
(我仍然认为你应该使用内置工具,数据泵或只是在两个模式之间内部复制数据,如前面的问题所讨论的......)