从oracle表生成XML文件

时间:2014-03-04 10:39:48

标签: xml oracle plsqldeveloper

我创建了一个用于从表生成XML文件的存储过程,请查看以下存储过程

create or replace
procedure dump_pcd (
V_TABLE_NAME IN varchar2,
v_FLAG OUT NUMBER
)
AS

BEGIN
DECLARE
xt_data xmltype;
v_ctx dbms_xmlgen.ctxHandle;
rc_data sys_refcursor;
v_file UTL_FILE.file_type;

BEGIN
-- v_file := UTL_FILE.fopen('MYXML', V_TABLE_NAME ||'.xml', 'A');
-- v_file := UTL_FILE.fopen('MYXML', V_TABLE_NAME || '.xml', 'A');


v_file := UTL_FILE.fopen('MYXML', V_TABLE_NAME || '.xml', 'W');
UTL_FILE.put_line(v_file, '<XML><'||V_TABLE_NAME||'></'||V_TABLE_NAME||'> <RECORDS>');






OPEN rc_data FOR
'select * from '|| V_TABLE_NAME||' ';

v_ctx := dbms_xmlgen.newContext (rc_data);
DBMS_XMLGEN.SETNULLHANDLING(v_ctx,null);

DBMS_XMLGEN.setrowsettag(v_ctx, 'RECORDS');
DBMS_XMLGEN.setrowtag(v_ctx, 'RECORD');

xt_data := dbms_xmlgen.getXMLType (v_ctx);
dbms_xmlgen.closeContext (v_ctx);

dbms_xslprocessor.clob2file(xt_data.getclobval( ), 'MYXML', ''||V_TABLE_NAME||'.xml');
v_FLAG := 1;


EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
dbms_xmlgen.closeContext (v_ctx);
v_FLAG := 0;

end ;

END dump_pcd;

它的工作原理但在60000行之后的某些行显示错误 我也替换&lt; ,&gt; ,&amp; char但仍然发生错误

ora-30625 method dispatch on null self argument is disallowed 

请检查代码和帮助

0 个答案:

没有答案