【发布时间】:2010-12-07 06:47:26
【问题描述】:
从这里开始是我正在尝试执行的任务的更大图景。我需要根据特定 SQL 请求的结果创建一个 xml 文件,并将其存储在客户端计算机上的文件中。为此,我有一个使用 xslt 执行 DBMS_XMLGen 的 SQL 脚本,我将使用 sqlplus 从命令行运行它并将输出通过管道传输到文件中。
我现在遇到的问题是 XML 代码的内容(存储在 CLOB 中)必须为 DBMS_OUTPUT.PUT_LINE 拆分成更小的块,并且每个块都以换行符结束,从而破坏了XML 代码。我想知道是否有办法在屏幕上打印 BLOB 的内容?
这是 SQL 脚本的示例:
将 SERVEROUTPUT 设置为 WRAPPED 格式; 关闭反馈 宣布 v_ctx DBMS_XMLGen.ctxHandle; v_xml CLOB; v_xslt CLOB; l_offset 数:= 1; 开始 v_ctx := DBMS_XMLGen.newContext('SELECT * FROM TABLE'); -- DBMS_XMLGen.setXSLT(v_ctx, v_xslt); --这里不相关 v_xml := BMS_XMLGen(v_ctx); DBMS_XMLGen.closeContext(v_ctx); 当 l_offset > dbms_lob.getlength(v_xml) 时循环退出; DBMS_OUTPUT.PUT_LINE (dbms_lob.substr(v_xml, 255, l_offset)); l_offset := l_offset + 255; 结束循环; 例外 其他时候 DBMS_OUTPUT.PUT_LINE(Substr(SQLERRM,1,255)); 增加; 结尾; /除了每 255 个符号后的换行符之外,我得到的输出是正确的。而且我不能稍后删除行尾,我需要 XML 可读
有什么想法吗?
干杯, 狮子座
【问题讨论】:
-
最终不得不编写一个 java 程序来做我需要的事情。感谢大家的帮助!