将%rowtype与连接和重复列一起使用

时间:2010-02-11 00:10:14

标签: oracle join plsql oracle10g

给定(忽略缺少主键,外键等 - 这不是关于表设计而只是一个例子):

Order:
----------
ID NUMBER;
VENDOR NUMBER;
PART NUMBER;

Parts:
------------
ID NUMBER;
VENDOR NUMBER;
DESCRIPTION VARCHAR2(1000 CHAR);


cursor c1 is select * from order o left join parts p on o.part = p.id;
c_row c1%rowtype;

如何区分将在加入中的两个VENDOR列?

我不认为我可以做c_row.value,因为那会很模糊,而且我认为c_row.p.vendor之类的东西不起作用。

如何引用两个值列的特定实例?

2 个答案:

答案 0 :(得分:5)

我通常会避免使用SELECT *,因为它会使代码容易受到对表结构的无关更改。

cursor c1 is
select o.id, o.vendor AS order_vendor, o.part,
       p.vendor AS part_vendor, p.description
from order o left join parts p on o.part = p.id;

答案 1 :(得分:0)

cursor c1 is select * from order o left join
(select id parts_id, vendor parts_vendor,
    description parts_description from parts) p
on o.part = p.parts_id;
c_row c1%rowtype;

你将拥有vendor和parts_vendor。