3

运行 Oracle 10g、Sqldeveloper 1.5.5

我想在 sqldeveloper 的输出或结果窗口中将 DBMS_XMLDOM.DOMDocument 的内容作为字符串查看。或其他一些简单的方法来调试这个东西......

谢谢,P

4

3 回答 3

5
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;
   /
于 2011-01-07T08:10:45.740 回答
3

您可以完成与以下相同的操作:

"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> 
于 2011-07-07T14:19:50.587 回答
0

如果您已经有一个 xmltype,只需使用函数 getClobVal()

xmldoc.getClobVal()

这会将您的 XMLType 作为 clob 返回,而不会产生额外的函数开销。

于 2011-12-06T23:42:26.397 回答