我有一些代碼值表包含一個代碼和一個Long ID的描述。Oracle插入通過從多個表中選擇,其中一個表可能沒有一行
我現在要創建引用了一些代碼的帳戶類型的條目,所以我有這樣的事情:
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和收件人表中檢索相應的值被找到他們各自的代碼。不幸的是,recipient_code是可空的,因此?替代值可能爲空。當然,隱式聯接不會返回一行,所以行不會插入到我的表中。
我試過使用NVL嗎?和r.recipient_id。
我試過在r.recipient_code =上強制外連接?通過添加(+),但它不是明確的連接,所以Oracle仍然沒有添加另一行。
任何人都知道這樣做的方式?
我明顯可以修改語句,以便從外部查找recipient_id,並且有一個?而不是r.recipient_id,並且不要從收件人表中選擇,但我寧願在1個SQL語句中執行所有這些操作。
會不會這有一個問題是,在tax_status或收件人中有多個條目,以及NULL收件人會發生什麼情況ient_code? – 2008-09-25 04:55:49
剛剛嘗試過,並且account_type_standard上的recipient_id列的null收件人代碼的結果爲null。 不知道多個條目,但在我的情況下,表具有唯一的代碼,所以我沒事。 – Mikezx6r 2008-09-25 12:39:03
根據託尼安德魯斯,不需要從DUAL中選擇序列值。可以只有account_type_standard_seq.nextval。 – Mikezx6r 2008-09-26 12:22:23