0
SET PAGES 0;
SET LINE 1000;
SET LONG 9999999;
SPOOL C:\pensionnew.xml;
col foo format a60000
SELECT DBMS_XMLGEN.GETXML('SELECT * FROM DATAAG')foo FROM DUAL;
SPOOL OFF;

私はxmlを生成するためにこのコードを使用します。答えは次のとおりです。列に値がないと仮定すると、タグが来ないことを意味します。そのためには空のタグが必要です

4

1 に答える 1

0

APIを使用してください。クイック ファイアgetxml(string)バージョンは使用しないでください。

例えば:

SQL> variable xml clob;
SQL> declare
  2    ctx number;
  3  begin
  4    dbms_lob.createtemporary(:xml, true, dbms_lob.call);
  5    ctx := dbms_xmlgen.newcontext('select * from foo');
  6    dbms_xmlgen.setnullhandling(ctx, dbms_xmlgen.EMPTY_TAG);
  7    dbms_xmlgen.getxml(ctx, :xml);
  8    dbms_xmlgen.closecontext(ctx);
  9  end;
 10  /

PL/SQL procedure successfully completed.

SQL> print xml

XML
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
 <ROW>
  <ID>1</ID>
  <A>a</A>
 </ROW>
 <ROW>
  <ID>2</ID>
  <A/>
 </ROW>
</ROWSET>
于 2013-01-23T07:52:44.487 に答える