用于搜索多个表的SQL语法

时间:2016-05-24 12:58:39

标签: sql

我需要在30个不同的表中搜索一个链接到操作员表的值。

1 .. *关系(使用两列可以通过这30个表中的任何一个引用运算符) 创建

目前我运行30个select语句来查找对这些表的任何引用,即

Select * from table.namespc.contnt 
where iCreatedById = 12345
or imodifiedby = 12345

然后我对找到引用的任何表进行更新。

UPDATE table.namespc.contnt 
SET iCreatedById = 54321, iModifiedById = 54321
where iCreatedById = 12345
or iModifiedById = 12345

有没有更简单的方法来完成这个过程?将表添加到数组?变量的值,如果找到则只搜索和更新?

1 个答案:

答案 0 :(得分:0)

您可以创建一个临时表,其中包含可能引用运算符的30个表的名称 然后,通过游标,循环其元素并动态组合更新查询。此查询应通过execute immediate

运行

顺便说一句,更新查询应该分成2个单独的查询:

UPDATE table.namespc.contnt
   SET iCreatedById = 54321
 WHERE iCreatedById = 12345;
UPDATE table.namespc.contnt
   SET iModifiedById = 54321
 WHERE iModifiedById = 12345;

这是因为如果您正在寻找的是其中之一,则您同时更新创建者和修饰符。