Sql 查询以获取Schema/DB中具有特定列值的所有表

Sql 查询以获取Schema/DB中具有特定列值的所有表,sql,db2-luw,Sql,Db2 Luw,是否存在显示具有特定列值的所有表的查询 我知道如何获取所有具有特定列的表,但我想扩展它以查找特定值,然后更新相应的结果以更改该值 select c.tabschema as schema_name, c.tabname as table_name from syscat.columns c inner join syscat.tables t on t.tabschema = c.tabschema and t.tabname = c.tabname where c.c

是否存在显示具有特定列值的所有表的查询

我知道如何获取所有具有特定列的表,但我想扩展它以查找特定值,然后更新相应的结果以更改该值

select c.tabschema as schema_name,
       c.tabname as table_name
from syscat.columns c
inner join syscat.tables t on
      t.tabschema = c.tabschema and t.tabname = c.tabname
where c.colname = 'START_DATE' and c.tabschema='sample'
and t.type = 'T'
*<AND 'START_DATE' ='2017-05-17' >*--NOT SURE HOW WE DO THIS PART??
order by schema_name,
         table_name;
选择c.tabschema作为schema\u名称,
c、 tabname作为表名
来自syscat.c列
内部联接syscat.t打开
t、 tabschema=c.tabschema和t.tabname=c.tabname
其中c.colname='START_DATE'和c.tabschema='sample'
而t.type='t'
**--不知道我们怎么做这个部分??
按架构名称排序,
表2:名称;
然后我想对生成的表进行更新,以更新列“START_DATE”值,如下所示

UPDATE <ALL RESULTED_TABLES FROM ABOVE QUERY> SET START_DATE = '2017-05-09' WHERE Tables = <ALL RESULTED_TABLES> 
更新集开始日期='2017-05-09',其中表格=

您需要编写一个使用动态SQL的应用程序才能实现这一点。Db2有许多不同的接口,允许您执行此操作,包括嵌入式SQL、CLI、ODBC、Python、Perl等


您需要编写一个使用动态SQL的应用程序才能实现这一点。Db2有许多不同的接口,允许您执行此操作,包括嵌入式SQL、CLI、ODBC、Python、Perl等


您可以编写存储过程或复合SQL。 使用SQL收集具有“开始日期”列的所有表,并循环此列表。 在循环中,您可以执行如下操作

EXECUTE IMMEDIATE 'UPDATE ' || resolved_tablename || ' SET START_DATE="<my_new_startdate>" WHERE START_DATE="2017-05-17"'
立即执行“更新”| |已解决的| tablename | |“设置开始日期=”“,其中开始日期=“2017-05-17””

您可以编写存储过程或复合SQL。 使用SQL收集具有“开始日期”列的所有表,并循环此列表。 在循环中,您可以执行如下操作

EXECUTE IMMEDIATE 'UPDATE ' || resolved_tablename || ' SET START_DATE="<my_new_startdate>" WHERE START_DATE="2017-05-17"'
立即执行“更新”| |已解决的| tablename | |“设置开始日期=”“,其中开始日期=“2017-05-17””
参见DB2手册参见DB2手册