我正在尝试查询SQL脚本中的大量系统/数据库信息,以便在DB2 Linux / Unix / Windows上运行。 理想情况下,输出应该是机器可读的,并且至少对人类来说是可理解的。
由于DB2 CLP中的输出格式化似乎不稳定(或者我太新了)我尝试将内容输出为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知识:
请注意,我正在使用SQL脚本(不是shell脚本);如果可能的话,我想让它在Windows,Linux和Unix机器上保持可用......
答案 0 :(得分:1)
您可以获得如下函数的XML输出:
Select REC2XML(1.0, 'COLATTVAL', 'row', ct) From (SELECT current timestamp as ct FROM sysibm.sysdummy1);
答案 1 :(得分:0)
DB2 for zOS中不存在此函数。替代方法是使用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> ...