【发布时间】:2018-11-07 20:00:31
【问题描述】:
我想运行一个查询,获取实时数据和元数据的组合,以获得定期更改的表名列表。这是用于在具有 100 多个模式和数千个表/视图的大型服务器上进行研究和分析。我需要帮助动态引用表名,我明白这是不可能的。不过……
我的谷歌搜索表明解决方案可能是文本变量中的 SQL 语句,然后由 EXEC 语句执行。但这是 DB2/400 v7r3,它是一个复杂的东西(就像它在 IBM 网站上的 SQL 参考一样),我很难创建正确的语法。
这是我想做的一个基本示例,但它当然不起作用:
SELECT TABLE_NAME,
TABLE_TEXT,
( SELECT COUNT(*) FROM TABLE_NAME ) AS ROW_COUNT
-- above line of course does not work
FROM QSYS2.SYSTABLES
WHERE TABLE_SCHEMA = 'ABCDEFGH'
AND TABLE_NAME IN ('ARCMNTST', 'ARIMSGT', 'ARTENT', 'DAILYHT', 'ETC')
我知道我需要类似以下内容,但我无法找出正确的陈述:
DECLARE @sqltext AS VARCHAR(128)
SELECT TABLE_NAME,
TABLE_TEXT,
( SET @sqltext = 'SELECT COUNT(*) FROM ABCDEFGH.' || TABLE_NAME
EXEC sqltest ) AS ROW_COUNT --this is probably wrong
FROM QSYS2.SYSTABLES
WHERE TABLE_SCHEMA = 'ABCDEFGH'
AND TABLE_NAME IN ('ARCMNTST', 'ARIMSGT', 'ARTENT', 'ETC', 'ETC', 'ETC')
ORDER BY TABLE_NAME
【问题讨论】: