Использование% rowtype с объединением и дублированием столбцов - PullRequest
1 голос
/ 11 февраля 2010

Учитывая (игнорируйте отсутствие первичных ключей, внешних ключей и т. Д. - речь идет не о дизайне таблицы, а лишь пример):

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 ]

5 голосов
/ 11 февраля 2010

Я обычно избегаю 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 голосов
/ 11 февраля 2010
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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...