寻求有关如何执行此操作的最佳建议:
我有一个这样的插页:
insert into empty_table (
column_1,
column_2,
column_3,
column_4
)
(select
sequence_1.nextval,
v_variable_1,
v_variable_2,
value_1
from template_table
where some_value = "value 1");
select语句本身返回22条记录。我想要做的是迭代这个插入并将变量设置为等于另一个查询的值,如:
select
variable_1,
variable_2
from table_with_var_values
where some_other_value = "value 2";
此查询返回大约180条记录,如下所示:
variable_1 variable_2
------------------------
Abc 101
Def 102
Ghi 103
Jkl 104
etc...
所以最终的结果是empty_table可以容纳3,960条记录(22 x 180)并且看起来像这样:
column_1 column_2 column_3 column_4
--------------------------------------------
1 Abc 101 Spring
2 Def 102 Summer
3 Ghi 103 Spring
4 Jkl 104 Fall
etc...
我可以将它作为函数存储在包中,但我不确定如何开始构建这样的函数。提前感谢您的帮助。
答案 0 :(得分:2)
为什么不结合两个查询并执行INSERT,如:
insert into empty_table (column_1,
column_2,
column_3,
column_4)
SELECT sequence_1.nextval,
t2.variable_1,
t2.variable_2,
tt.v_variable_1,
from template_table tt,
table_with_var_values t2
where tt.some_value = 'value 1' AND
t2.some_other_value = 'value 2'
因为TEMPLATE_TABLE和TABLE_WITH_VAR_VALUES之间没有连接条件,所以你应该得到一个笛卡尔连接,其中两个表的每一行都连接在一起,这就是我想你想要的。不需要循环来获得它。
不确定您的哪个template_table列有'Spring','Summer'和'Fall'值,所以我选择了v_variable_1 - 根据需要替换。
分享并享受。