运行 Oracle 10g、Sqldeveloper 1.5.5
我想在 sqldeveloper 的输出或结果窗口中将 DBMS_XMLDOM.DOMDocument 的内容作为字符串查看。或其他一些简单的方法来调试这个东西......
谢谢,P
DBMS_XMLDOM.WRITETOBUFFER Writes the contents of the node to a buffer.
DBMS_XMLDOM.WRITETOCLOB Writes the contents of the node to a CLOB.
DBMS_XMLDOM.WRITETOFILE Writes the contents of the node to a file.
我有使用 DIRECTORY 将其写入文件系统的 PL/SQL 代码:
dbms_xmldom.writeToFile(dbms_xmldom.newDOMDocument( xmldoc)
,'DATAPUMPDIR/myfile.xml') ;
我使用 dbms_xmldom.writetoclob 创建了一个函数
create or replace function xml2clob (xmldoc XMLType) return CLOB is
clobdoc CLOB := ' ';
begin
dbms_xmldom.writeToClob(dbms_xmldom.newDOMDocument( xmldoc)
,clobdoc) ;
return clobdoc;
end;
/
询问:
SELECT xml2clob(Sys_Xmlagg(
Xmlelement(Name "dummy"
,dummy
),Xmlformat('dual')))
FROM dual;
输出:
<?xml version="1.0"?>
<dual>
<dummy>X</dummy>
</dual>
您可以尝试使用这样的函数:
create or replace function dom2clob (domdoc DBMS_XMLDOM.DOMDocument) return CLOB is
clobdoc CLOB := ' ';
begin
dbms_xmldom.writeToClob(domdoc,clobdoc) ;
return clobdoc;
end;
/
您可以完成与以下相同的操作:
"SELECT xml2clob(Sys_Xmlagg(Xmlelement(Name "dummy",dummy),Xmlformat('dual'))) FROM dual;"
和:
SELECT
Sys_Xmlagg(Xmlelement(Name "dummy",dummy)
,Xmlformat('dual')).Extract('/*').getClobVal() as "test"
FROM dual;
而且您不必创建函数“xml2clob”
.Extract('/*')
用于“漂亮的印刷”
输出:
<dual>
<dummy>X</dummy>
</dual>
如果您已经有一个 xmltype,只需使用函数 getClobVal()
xmldoc.getClobVal()
这会将您的 XMLType 作为 clob 返回,而不会产生额外的函数开销。