I join esterni non funzionano "come previsto" in quel caso perché hai esplicitamente detto a Oracle che desideri i dati solo se i criteri su quella tabella corrispondono. In quello scenario, l'outer join è reso inutile.
Una soluzione
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 = ?)
)
[Modifica]Se prevedi più righe da una sottoselezione, puoi aggiungere ROWNUM=1 a ciascuna clausola dove OPPURE utilizzare un aggregato come MAX o MIN. Questa ovviamente potrebbe non essere la soluzione migliore per tutti i casi.
[Modifica] Per commento,
(SELECT account_type_standard_seq.nextval FROM DUAL),
può essere solo
account_type_standard_seq.nextval,