Je connais les limitations de la sous-requête de la configuration ANSI SQL d'Oracle. Vous ne pouvez pas utiliser un identificateur dans une sous-requête déclarée plus d'un niveau profond.Oracle ORA: 00904: Sous-requête dans LEFT JOIN
J'essaie la requête suivante, qui, d'après ce que je peux voir est seulement un niveau profond, mais je reçois cette erreur. Cela ne fonctionne-t-il pas pour les jointures de table? (J'ai tronqué la procédure un peu, mais le problème devrait être clair.En outre, si cela signifie quelque chose, j'utilise FIRST_VALUE
fonctions analytiques dans mes valeurs de sélection.Nous sommes sur 10g.)
L'erreur:
Error(111,79): PL/SQL: ORA-00904: "VT"."MAIL_TO_ADDRESS_NUMBER": invalid identifier
Le proc:
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;