従業員が配管工の場合、従業員データベースを更新して、batch_id を「P-1000」に設定したいと考えています。
5 つの個別の (そして遅い) クエリを作成する代わりに、次のことを行います。
- 配列の各インデックスをテーブル名に設定します
- 配列をループする
- 文字列インデックスの文字列値を使用してテーブルを更新します
私がここで提案している概念のようなものは、遠く離れていても見つけることができません。
それにもかかわらず、ここに私がやろうとしていることの疑似コードがあります。
declare
type array_type is table of varchar2(100) index by binary_integer;
dmt_tables array_type;
begin
--fill dm_employeeTables array
dm_employeeTables(0) := 'dm_address';
dm_employeeTables(1) := 'dm_communications';
dm_employeeTables(2) := 'dm_identifier';
dm_employeeTables(3) := 'dm_name';
dm_employeeTables(4) := 'dm_qualifications';
-- loop through tables
for i in dm_employeeTables.FIRST .. dmt_tables.LAST
loop
update dm_employeeTables(i) a
set employee_batch_id = 'P-1000'
where a.employee_type = 'PLUMBER';
i=i+1;
end loop;
end;