如何在oracle中用嵌套游标遍历相同的table
How to traverse the same table with nested cursors in oracle
我遇到一个 oracle 过程的问题,该过程使用两个嵌套游标循环相同的 table。
从概念上讲,我有一个包含十列的 table,编号从一到十。
第 1 列必须始终有数据,因为它是主键。
第 10 列可能有也可能没有数据,因为它就像一个子列,如果它没有数据就是父记录,否则就是子记录。
我需要在两个不同的 table 中插入父记录,而只在其中一个中插入子记录。
为此我创建了两个游标,一个选择父记录,另一个只选择子记录。
我将第 1 列(出现在子记录的第 10 列)的值作为参数传递给第二个游标。
问题是它在完成第一个游标之前不会进入第二个游标,我需要它从第一个游标读取记录,进入第二个游标,读取存在的记录,然后return到第一个光标。
谁能帮我解决这个问题?
从现在开始,感谢您的关注。
尝试这样的事情:
begin
for c in (select * from child_table) loop
insert into table1
select * from parent_table where column_1 = c.column_10;
insert into table2
select * from parent_table where column_1 = c.column_10;
insert into table3
(column_1,
column_2,
column_3,
column_4,
column_5,
column_6,
column_7,
column_8,
column_9,
column_10)
values
(c.column_1,
c.column_2,
c.column_3,
c.column_4,
c.column_5,
c.column_6,
c.column_7,
c.column_8,
c.column_9,
c.column_10);
end loop;
end;
我遇到一个 oracle 过程的问题,该过程使用两个嵌套游标循环相同的 table。
从概念上讲,我有一个包含十列的 table,编号从一到十。
第 1 列必须始终有数据,因为它是主键。 第 10 列可能有也可能没有数据,因为它就像一个子列,如果它没有数据就是父记录,否则就是子记录。
我需要在两个不同的 table 中插入父记录,而只在其中一个中插入子记录。
为此我创建了两个游标,一个选择父记录,另一个只选择子记录。
我将第 1 列(出现在子记录的第 10 列)的值作为参数传递给第二个游标。
问题是它在完成第一个游标之前不会进入第二个游标,我需要它从第一个游标读取记录,进入第二个游标,读取存在的记录,然后return到第一个光标。
谁能帮我解决这个问题?
从现在开始,感谢您的关注。
尝试这样的事情:
begin
for c in (select * from child_table) loop
insert into table1
select * from parent_table where column_1 = c.column_10;
insert into table2
select * from parent_table where column_1 = c.column_10;
insert into table3
(column_1,
column_2,
column_3,
column_4,
column_5,
column_6,
column_7,
column_8,
column_9,
column_10)
values
(c.column_1,
c.column_2,
c.column_3,
c.column_4,
c.column_5,
c.column_6,
c.column_7,
c.column_8,
c.column_9,
c.column_10);
end loop;
end;