2011-10-27 25 views
0

DB2 Linux/Unix/Windowsで実行するSQLスクリプトで、多くのシステム/データベース情報を照会しようとしています。 理想的には、出力は機械で読み取り可能であり、少なくとも人間にとっては幾分理解できるものでなければなりません。 DB2 CLPで出力をフォーマットすると不安定なようだ(または私はあまりにも初心者くさいよ)としてDB2スクリプトでSQLクエリ結果をXMLとしてエクスポートする

私は、後でXMLやプロセス、それをそのまま出力のものに何かしようとした:これはうまく動作

VALUES ('<?xml version="1.0"?>'); 
SELECT REC2XML(1.0, 'COLATTVAL', 'row', NAME, VALUE, DEFERRED_VALUE) FROM SYSIBMADM.DBMCFG ORDER BY NAME; 

を。私はおそらくさらに処理することができる出力を得る。しかし

、私は、このようなCURRENT_TIMESTAMPとして機能してREC2XMLを実行しよう:だけの列選択をサポートするように思われるような

SELECT Current_timestamp FROM sysibm.sysdummy1; 

私はREC2XMLを使用することはできません。

は、多くのDB2の知識を持っていない:

  1. は、SQLスクリプト
  2. からXML出力を生成するためのより良い/より簡単な方法はありますまた、出力に何らかの方法、XMLなどのCURRENT_TIMESTAMPなどの機能の結果あり?

私はSQLスクリプト(シェルスクリプトではない)の後にあることに注意してください。可能であれば、私はWindows、Linux、Unixマシン上で使えるようにしたいと考えています...

答えて

1
  1. 私は良い方法が分かりません。
  2. あなたはこのような関数のXML出力を得ることができます。

    Select REC2XML(1.0, 'COLATTVAL', 'row', ct) From (SELECT current timestamp as ct FROM sysibm.sysdummy1); 
    
+0

おかげで、私が探していたまさに、vikrantislav。 – reiniero

0

この関数はZOS用DB2には存在しません。代わりに、XMLFORESTを使用して列セットを生成し、XMLAGGを使用して行をマージします。

SELECT 
xmlserialize(
    xmlelement(
     name "employees", 
     xmlagg(
      xmlelement(
       name "employee", 
       xmlforest(
        EMPNO as "empno", 
        SURNAME as "surname", 
        MIDNAME as "midname", 
        FIRSTNAME as "firstname", 
        HIREDATE as "hiredate" 
       ) 
      ) 
      order by EMPNO 
     ) 
    AS CLOB VERSION '1.0' INCLUDING XMLDECLARATION 
    ) 
) 
from EMPLOYEES 

サンプル:

<?xml version="1.0" encoding="UTF-8"?><employees><employee><empno>12345</empno> ... 
関連する問題