Oracle: Как отобразить DBMS_XMLDOM.DOMDocument для отладки? - PullRequest
3 голосов
/ 07 января 2011

Запуск Oracle 10g, Sqldeveloper 1.5.5

Я хочу просмотреть содержимое DBMS_XMLDOM.DOMDocument в виде строки в окне вывода или результатов в sqldeveloper.или какой-то другой простой способ отладки этой вещи ...

Спасибо, P

Ответы [ 3 ]

4 голосов
/ 07 января 2011
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.

У меня есть 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;
   /
3 голосов
/ 07 июля 2011

Вы можете выполнить то же, что и в:

"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> 
0 голосов
/ 07 декабря 2011

Если у вас уже есть тип xml, просто используйте функцию getClobVal ()

xmldoc.getClobVal()

Возвращает ваш XMLType в виде сгустка без дополнительных служебных функций.

...