我想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
子句。