Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
db2在sysibm.syscolumns输出中列出的所有表中循环查找特定列和特定列值_Db2 - Fatal编程技术网

db2在sysibm.syscolumns输出中列出的所有表中循环查找特定列和特定列值

db2在sysibm.syscolumns输出中列出的所有表中循环查找特定列和特定列值,db2,Db2,在DB2中,我运行了一个查询: 从sysibm.sysa列中选择*,其中a.tbcreator='ABCD'和a.name='EMP\u ID' 输出显示整个架构中包含特定列名EMP_ID的所有表 现在,我需要扫描/循环上面生成的输出表,并检查Tbname列(在上面的输出中)下列出的所有表名中是否有特定的EMP_ID值 换句话说,拉出模式中的所有表,这些表可能包含等于“1234”的列EMP_ID。 谢谢。您可以在Db2中使用复合语句执行此类任务 下面是单个事务中的一个最小示例 您需要将语句终止符

在DB2中,我运行了一个查询:

从sysibm.sysa列中选择*,其中a.tbcreator='ABCD'和a.name='EMP\u ID'

输出显示整个架构中包含特定列名EMP_ID的所有表

现在,我需要扫描/循环上面生成的输出表,并检查Tbname列(在上面的输出中)下列出的所有表名中是否有特定的EMP_ID

换句话说,拉出模式中的所有表,这些表可能包含等于“1234”的列EMP_ID。
谢谢。

您可以在Db2中使用复合语句执行此类任务

下面是单个事务中的一个最小示例

您需要将语句终止符设置为
@
才能运行它

CREATE TABLE FIND_VALUE (
    TABSCHEMA  VARCHAR(128) NOT NULL
,   TABNAME    VARCHAR(128) NOT NULL
,   ROW_COUNT  BIGINT       NOT NULL
)
@
BEGIN
    FOR C AS 
        SELECT 'INSERT INTO FIND_VALUE'
            || ' SELECT ''' || TABSCHEMA || ''',''' || TABNAME || ''''
            || ', COUNT(*)' 
            || ' FROM "' ||  TABSCHEMA || '"."' || TABNAME || '"' 
            || ' WHERE "' || COLNAME || '" = 1234' AS S
        FROM 
             SYSCAT.COLUMNS
        JOIN SYSCAT.TABLES  USING ( TABSCHEMA, TABNAME ) 
        WHERE
             TYPE = 'T'
        AND  COLNAME = 'EMP_ID' 
    DO       
        EXECUTE IMMEDIATE C.S;
    END FOR;
END
@
SELECT * FROM FIND_VALUE