【发布时间】:2014-04-08 09:30:16
【问题描述】:
上周我只是在尝试自学 PL/SQL 过程,并且遇到了一些初学者问题,了解循环/游标如何与连接结合使用。
任何人可以阐明的任何观点都会很棒,因为我对游标周围的一些 PL/SQL 概念很陌生。
提前为这个高度晦涩的例子道歉
在下面的示例中,我基本上从表 A 开始并尝试获取客户的名称,然后通过以下方式设置一个 reason_code 标志:a) 检查表 B 上的连接是否成功,如果连接失败则检查客户是否位于区域 B(使用表 C)。在下面的假设示例中,我还尝试创建一个包含来自另一个表(客户名称)的数据的输出。
我尝试使用与以下类似的方法进行连接:
声明
order_cnt 整数;
光标base1是 选择 customer_id、订阅、原因码 来自客户订阅
开始
base1 循环中的 base_rec
选择计数(*)
进入 order_cnt
来自客户订阅基地,客户订单
其中 base.customer_id = order.customer_id;
如果 order_cnt > 1 那么
update customerssubscription set reasoncode = '已订购产品'
base_rec 的当前位置;
否则...
结束循环
结束;
如您所见,我试图为基表打开一个游标并遍历每条记录,加入其他表以设置标志。这不起作用,我认为它是我尝试加入的方式,因为它没有指定当前行。我也没有找到任何加入数据检索的例子,我试图推导客户名称
表 A:客户订阅
Customer_ID | SubscriptionID | reasoncode
123 | 567 |
124 | |
表 B:客户订单
Customer_ID | Order_ID | Product
123 | 567 | TITANIC
表 C:客户
Customer_ID | Name | Area
123 | Roger | E
124 | Timothy | B
输出:表 A
Customer_ID | Name | ReasonCode
123 | Roger | Has ordered Product
124 | Timothy | Outside of area
【问题讨论】:
标签: loops join plsql iteration