来自SYS表的DB2 Dynamic View CREATE语句

时间:2015-01-25 02:03:40

标签: sql db2-luw

如果可能的话,这是不确定的,但是这里......

在DB2 v9.7中,我尝试为模式中的每个表创建一个视图。

视图应包含每个列,但会再添加一个时间戳列。

即。 表1(COL1,COL2,COL3)

V_TABLE1(COL1,COL2,COL3,INS_DTTM)

TABLE2(COL1,COL4)

V_TABLE2(COL1,COL4,INS_DTTM)

这是我到目前为止所做的事情

SELECT 'CREATE VIEW V_' || NAME || ' (' || 
(SELECT LISTAGG(NAME, ', ') FROM SYSIBM.SYSCOLUMNS WHERE TBCREATOR=CREATOR)  || ') 
AS SELECT  ' || (SELECT LISTAGG(NAME, ', ') 
FROM SYSIBM.SYSCOLUMNS WHERE TBCREATOR='SCHEMA') || ', CAST(NULL AS TIMESTAMP) 
AS INS_DTTM FROM ' || CREATOR || '.' || NAME
FROM SYSIBM.SYSTABLES
WHERE CREATOR = 'SCHEMA' AND NAME LIKE 'T%' ORDER BY NAME;

这是我的子选择让我感到悲伤......

我得到以下内容:

CREATE VIEW V_TABLE1 (COL1, COL2, COL3) AS SELECT COL1, COL2, COL3, CAST(NULL AS TIMESTAMP) AS INS_DTTM FROM SCHEMA.TABLE1
CREATE VIEW V_TABLE2 (COL1, COL2, COL3) AS SELECT COL1, COL2, COL3, CAST(NULL AS TIMESTAMP) AS INS_DTTM FROM SCHEMA.TABLE2
如果我的语法不合适,我会事先道歉......我正在对开发环境和互联网进行重新安排......所以我确定我犯了错误......

我希望列出的列与该行的表名相关...但LISTAGG只出现在第一行......

希望这是有道理的......如果有人有任何建议,请告诉我。

由于

0 个答案:

没有答案