3

Oracle 10g、Sqldeveloper1.5.5の実行

DBMS_XMLDOM.DOMDocumentの内容を、sqldeveloperの出力ウィンドウまたは結果ウィンドウに文字列として表示したいと思います。またはこのことをデバッグする他の簡単な方法...

ありがとう、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 に答える