2011-10-27 4 views
0

Я пытаюсь запросить много информации о системе/базе данных в сценарии SQL, который будет запущен в DB2 Linux/Unix/Windows. В идеале выход должен быть как машиносчитываемым, так и, по крайней мере, несколько понятным для людей.Экспорт результатов SQL-запроса в XML в скрипте DB2

Как форматировать вывод в DB2 CLP кажется беспорядочным (или я слишком Newb) Я пытался выводить вещи, как XML и обрабатывать его позже, что-то вроде:

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

Это работает нормально; Я получаю вывод, я, вероятно, могу продолжить работу.

Однако, когда я пытаюсь запустить REC2XML с такой функцией, как CURRENT_TIMESTAMP:

SELECT Current_timestamp FROM sysibm.sysdummy1; 

Я не могу использовать REC2XML, как кажется, только для поддержки выбирает столбцов.

Не имея много знаний DB2:

  1. Есть ли лучше/простой способ для создания вывода XML из сценария SQL
  2. Есть ли какой-нибудь способ также выводить результаты функций, таких как CURRENT_TIMESTAMP как XML ?

Обратите внимание, что я после 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

Эта функция не существует в 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> ... 
Смежные вопросы