将数组/嵌套 table 插入 table
Insert array / nested table into table
如果已经给出答案,我真的很抱歉,但我只能找到 php 的答案。
我的问题是我得到了嵌套的 table 数组“test_nested_table”,它具有值 ('a'、'b'、'c')。我还在数据库中得到了 table“test_table”,其中包含三列 col1、col2、col3。
我想做的就是
insert into test_table values (test_nested_table);
我明白我能做到:
insert into test_table values (test_nested_table(1), test_nested_table(2), test_nested_table(3));
但是,我的实际生活table可能非常大,如果我真的需要键入所有100个元素来插入,我会感到非常惊讶。
我想出了以下解决方案:
declare
type test_array is varray(3) of varchar2(10);
ta test_array := test_array ('a','b','c');
sql_txt varchar2(1000) := 'insert into test_table_1 values (''';
begin
for n in 1 .. ta.count loop
sql_txt := sql_txt || ta(n)||''',''';
end loop;
sql_txt := rtrim(sql_txt,',''')||''')';
execute immediate sql_txt;
end;
/
因此,如果您有数组或任何其他集合类型,则可以使用动态方法插入大量值,而无需将它们全部写入插入语句;但是,我相信应该还有更常用的方法来做到这一点。
如果已经给出答案,我真的很抱歉,但我只能找到 php 的答案。
我的问题是我得到了嵌套的 table 数组“test_nested_table”,它具有值 ('a'、'b'、'c')。我还在数据库中得到了 table“test_table”,其中包含三列 col1、col2、col3。
我想做的就是
insert into test_table values (test_nested_table);
我明白我能做到:
insert into test_table values (test_nested_table(1), test_nested_table(2), test_nested_table(3));
但是,我的实际生活table可能非常大,如果我真的需要键入所有100个元素来插入,我会感到非常惊讶。
我想出了以下解决方案:
declare
type test_array is varray(3) of varchar2(10);
ta test_array := test_array ('a','b','c');
sql_txt varchar2(1000) := 'insert into test_table_1 values (''';
begin
for n in 1 .. ta.count loop
sql_txt := sql_txt || ta(n)||''',''';
end loop;
sql_txt := rtrim(sql_txt,',''')||''')';
execute immediate sql_txt;
end;
/
因此,如果您有数组或任何其他集合类型,则可以使用动态方法插入大量值,而无需将它们全部写入插入语句;但是,我相信应该还有更常用的方法来做到这一点。