У меня есть несколько таблиц значений кода, которые содержат код и описание с длинным идентификатором.
Теперь я хочу создать запись для типа учетной записи, которая ссылается на несколько кодов, поэтому у меня есть что-то вроде этого:
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.