Oracle: как мне отобразить DBMS_XMLDOM.DOMDocument для отладки?
Запуск Oracle 10g, Sqldeveloper 1.5.5
Я хочу просмотреть содержимое DBMS_XMLDOM.DOMDocument в виде строки в окне вывода или результатов в sqldeveloper. или какой-то другой простой способ отладки этой вещи...
Спасибо,P
3 ответа
Решение
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;
/
Вы можете сделать то же самое, что и в:
"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>
Если у вас уже есть тип xml, просто используйте функцию getClobVal()
xmldoc.getClobVal()
Это возвращает ваш XMLType как clob без дополнительных служебных функций.