一般地,在开发xmlp的时候,我们要先用report builder制作rdf模板,然后上传rdf到客户化应用下的reports文件夹下,通过并发请求,输出xml数据,然后保存成xml文件,或者直接将请求输出的out文件改后缀为xml,同样得到输出数据的xml文件,接着通过加载xml数据制作rtf模拟,定义数据和模板,再次处理并发请求,以求得到我们想要输出格式的报表。(其中的详细过程就不再啰嗦了,想必都已经很熟了)
但是如果我们的开发环境中没办法上传rdf模板的时候,我们就要用其他的办法输出得到xml文件了,这里是介绍了一种使用plsql通过字段信息生成xml文件的方法:
dbms_xmlgen这个程序包是关键,有兴趣的可以去了解下,它可以根据一个游标输出一个CLOB格式的XML文本,下面是参考程序:
PROCEDURE xml_print(errbuf OUT VARCHAR2,
retcode OUT NUMBER) IS
ctx dbms_xmlgen.ctxhandle;
c_result CLOB;
xmltext VARCHAR2(5000);
v_source ref_cursor;
line VARCHAR2(200);
TYPE ref_cursor IS REF CURSOR;
BEGIN
--定义数据,数据集必须为游标变量
OPEN v_source FOR
SELECT 1,
2,
CURSOR (SELECT 3,
4
FROM dual
WHERE 1 = 1
UNION ALL
SELECT 5,
6
FROM dual
WHERE 1 = 1)
FROM dual
WHERE 1 = 1;
--定义XML CLOB文件
ctx := dbms_xmlgen.newcontext(v_source);
--设置XML文件标签
dbms_xmlgen.setrowsettag(ctx,
'HEADER');
dbms_xmlgen.setrowtag(ctx,
'LINE');
-- generate the CLOB as a result.
c_result := dbms_xmlgen.getxml(ctx);
/* --直接输出clob
dbms_output.put_line(c_result);*/
--以文本形式输出XML文件
xmltext := substr(c_result);
LOOP
EXIT WHEN xmltext IS NULL;
line := substr(xmltext,
1,
instr(xmltext,
chr(10)) - 1);
fnd_file.put(fnd_file.output,
line);
xmltext := substr(xmltext,
instr(xmltext,
chr(10)) + 1);
END LOOP;
dbms_xmlgen.closecontext(ctx);
CLOSE v_source;
END xml_print;
上面的输出格式等自己可以控制,更多的方法可以查看dbms_xmlgen程序包