我在编写代码时遇到了问题。请帮帮我。
我有一个光标c1它会有一些用户而另一个光标会包含一些其他用户。
c1和c2可能有一些普通用户。
我想写这样的代码
if c1.user=c2.user
then
insert into b1 table
else
insert c1 into b1 table
insert c2 into b2 table
end;
我认为,如果有条件,我需要打开游标,但如果我之前打开2个游标,它是否会起作用?如果没有,请建议其他方法。
答案 0 :(得分:0)
如果这些是您使用光标中的数据执行的唯一操作,则根本不需要光标。将两个光标连接在一起并使用带有WHEN子句的multi-table insert
insert all
into b1 (<columns> values (<values>)
when c1.user is null or c2.user is null
into b2 (<columns> values (<values>)
select <columns>
from <some_table> c1
full outer join <some_other_table> c2
on c1.user = c2.user
where <some_conditions>
通过将两个表与FULL OUTER JOIN连接在一起,您可以从两个表中选择所有内容,请参阅A Visual Explanation of SQL Joins。您总是插入表B1
,因此没有条件,但只有当用户不同时才会插入B2
,因此会使用WHEN子句。如果它们不同,则其中一个或另一个将为NULL,因为它们不会满足JOIN条件。