2010-02-11 24 views
1

鑑於(忽略缺乏主鍵,外鍵,等 - 這是不是表的設計和只是一個例子):使用%ROWTYPE與參加和重複列

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這樣的作品。

如何引用兩個值列的特定實例?

回答

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; 
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。