Я знаю ограничения подзапросов в установке ANSI SQL Oracle. Вы не можете использовать идентификатор в подзапросе, объявленном более чем на один уровень.Oracle ORA: 00904: Подзапрос в LEFT JOIN
Я пытаюсь выполнить следующий запрос, который, насколько я могу видеть, только на одном уровне, но я получаю эту ошибку. Не работает ли это для объединения таблиц? (Я несколько усекла процедуру, но проблема должна быть ясной. Кроме того, если это что-то значит, я использую аналитические функции по моим выбранным значениям. Мы на 10g.)
Ошибка:
Error(111,79): PL/SQL: ORA-00904: "VT"."MAIL_TO_ADDRESS_NUMBER": invalid identifier
прок:
PROCEDURE MYPROCEDURE (
p_TransactionId IN NUMBER,
p_Cursor_Out OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN p_Cursor_Out FOR
SELECT
...
FROM vehicle_transaction vt
INNER JOIN registration_transaction reg ON vt.transaction_id = reg.transaction_id
/* The problem is here */
LEFT OUTER JOIN (
SELECT
laddt2.address
FROM lien_address_transaction laddt2
WHERE vt.mail_to_address_number IS NOT NULL AND laddt2.address_number = vt.mail_to_address_number
) laddt
ON (laddt2.address_number = vt.mail_to_address_number)
WHERE vt.transaction_id = p_TransactionId;
END MYPROCEDURE;