我有一个主表,其中有两列包含表名和id。我的数据库中有表名的那些表。
例如,我找到特定的表名,选择id。然后我想用数据填充该名称的表。我想在一个查询中这样做。我怎么能这样做?
目标:一次填充所有表的数据,其名称与主表中的表名列中的值类似。
这就是我获取表格列表的方式。我应该循环一下。
select tbl from asp_tbl where asp in (
select id from (
SELECT * FROM DIMENSION WHERE EXTERNALKEY LIKE 'W16%')
);
然后我将尝试合并表中需要填充的其他表的数据:
MERGE INTO tbl d
USING
(SELECT ? nums, ? names from data_table) s
ON(d.product = s.product and d.ga = s.ga and d.metric_id = s.metric_id)
WHEN MATCHED THEN UPDATE SET d.names = s.names
WHEN NOT MATCHED THEN INSERT (nums, names)values(s.nums,s.names);
我是否提供了足够的信息?
答案 0 :(得分:1)
根据我的理解,你需要一些存储过程,这可能会满足一些带有一些测试数据的表格。如果是这样,你可以写一些类似的东西:
create procedure fulfil_test_data (p_table_name varchar2) is
begin
for x IN (select tbl from asp_tbl where asp in (
SELECT table_id FROM DIMENSION WHERE EXTERNALKEY LIKE p_table_name )) loop
execute immediate 'insert into '|| x.tbl ||' (nums, names)
select level , chr(ascci(''A'') + mod(level,26)) from dual connect by level < 1001';
end loop;
end;
/
并称之为
begin
fulfil_test_data('W16%');
end;
/