W takim przypadku złączenia zewnętrzne nie działają „zgodnie z oczekiwaniami”, ponieważ wyraźnie powiedziałeś firmie Oracle, że chcesz mieć dane tylko wtedy, gdy spełnione są kryteria w tej tabeli. W tym scenariuszu złącze zewnętrzne staje się bezużyteczne.
Obejście
INSERT INTO account_type_standard
(account_type_Standard_id, tax_status_id, recipient_id)
VALUES(
(SELECT account_type_standard_seq.nextval FROM DUAL),
(SELECT tax_status_id FROM tax_status WHERE tax_status_code = ?),
(SELECT recipient_id FROM recipient WHERE recipient_code = ?)
)
[Edytuj]Jeśli oczekujesz wielu wierszy z podselekcji, możesz dodać ROWNUM=1 do każdej klauzuli WHERE LUB użyć zagregowanej wartości, takiej jak MAX lub MIN. To oczywiście może nie być najlepszym rozwiązaniem we wszystkich przypadkach.
[Edytuj] Za komentarz,
(SELECT account_type_standard_seq.nextval FROM DUAL),
może być po prostu
account_type_standard_seq.nextval,