Oracle Insert via Select из нескольких таблиц, где в одной таблице может не быть строки

У меня есть несколько таблиц значений кода, которые содержат код и описание с длинным идентификатором.

Теперь я хочу создать запись для типа учетной записи, которая ссылается на несколько кодов, поэтому у меня есть что-то вроде этого:

insert into account_type_standard (account_type_Standard_id,
tax_status_id, recipient_id)
( select account_type_standard_seq.nextval,
ts.tax_status_id, r.recipient_id
from tax_status ts, recipient r
where ts.tax_status_code = ?
and r.recipient_code = ?)

Это извлекает соответствующие значения из таблиц tax_status и получателей, если найдено совпадение для их соответствующих кодов. К сожалению, receient_code может иметь значение nullable, и поэтому? значение замещения может быть нулевым. Конечно, неявное соединение не возвращает строку, поэтому строка не вставляется в мою таблицу.

Я пытался использовать NVL на? и на r.recipient_id.

Я пытался форсировать внешнее соединение для r.recipient_code =? добавив (+), но это не явное соединение, поэтому Oracle все еще не добавил еще одну строку.

Кто-нибудь знает способ сделать это?

Я могу, очевидно, изменить оператор так, чтобы я выполнял поиск по внешнему получателю, и получил? вместо r.recipient_id, и вообще не выбирайте из таблицы получателей, но я бы предпочел сделать все это в 1 операторе SQL.

Ответы на вопрос(6)

Ваш ответ на вопрос