我想select
into
變量像這樣的東西:選擇到變量
select NAME, LASTNAME
into v_name, v_lastname
from PERSON;
據this question,我可以用exception
NO_DATA_FOUND
管理。
但是,如果NAME
是null
但沒有LASTNAME
,沒有兩個select
怎麼辦?
我想select
into
變量像這樣的東西:選擇到變量
select NAME, LASTNAME
into v_name, v_lastname
from PERSON;
據this question,我可以用exception
NO_DATA_FOUND
管理。
但是,如果NAME
是null
但沒有LASTNAME
,沒有兩個select
怎麼辦?
如果表中存在匹配的行,即使值爲null
,select into
也會正常工作,所以我懷疑在使用鏈接問題中描述的異常處理時,該語句存在真正的問題。如果有一條線,則不會引發異常。
如果你想保持這種說法對於這兩種情況下工作(有和沒有在表中的數據),而不異常處理,使用left outer join
:
select NAME
, LASTNAME
into v_name
, v_lastname
from dual
left
outer
join PERSON
on 1=1
;
我會建議保持異常處理到位而不是使用left outer join
,因爲在我看來這是最可讀的方式。只是爲了給你選擇。
你在談論兩件獨立的事情。可以是:
NO_DATA_FOUND
來管理異常。NAME
和/或LASTNAME
的值爲null
。在這種情況下,關聯的變量將被簡單地設置爲null
,其中數據庫中的值爲null
- 由於返回了一行,因此沒有例外要處理。順便提一句,您可能還想考慮使用TOO_MANY_ROWS
例外。如果你選擇了變量,你的查詢必須返回一行,並且你的查詢必須返回(我讚賞它可能只是一個簡單的例子),但沒有where
子句。