请告诉我如何从以下查询中获取'AA''BB''CC'
declare
type arrays1 is varray(3) of varchar2(30);
a1 arrays1 := arrays1('A', 'B', 'C');
type arrays2 is varray(3) of varchar2(30);
a2 arrays2 := arrays2('A', 'B', 'C');
begin
for i in 1..a1.count loop
for j in 1..a2.count loop
insert into dummy_insert values(concat(a1(i),a2(j)));
commit;
end loop;
end loop;
end;
现在我得到了9行
答案 0 :(得分:2)
您可以测试值是否相同:
...
for i in 1..a1.count loop
for j in 1..a2.count loop
if a1(i) = a2(j) then
insert into dummy_insert values(concat(a1(i),a2(j)));
end if;
end loop;
end loop;
...
(看起来有点毫无意义,但不知道你现实世界的情况是什么,很难建议如何改进逻辑。)
答案 1 :(得分:0)
“现在我得到了9行”
外部循环遍历三个元素的数组。嵌套循环遍历外部循环中每个元素的三个元素的数组。 3 * 3 = 9。
“如何从下面的查询中获取'AA''BB''CC'”
应用奥卡姆剃刀并丢弃内环:
declare
type arrays1 is varray(3) of varchar2(30);
a1 arrays1 := arrays1('A', 'B', 'C');
begin
for i in 1..a1.count loop
insert into dummy_insert values(concat(a1(i),a1(i)));
end loop;
commit;
end;
请注意,提交内部循环是不好的做法。显然它与这样的玩具代码没有任何区别,但是如果我们总是做正确的事情,那么当它真正重要时我们就不会做错事。