我有一个问题:
DECLARE
id_tmp number;
BEGIN
select id into id_tmp from ...;
END;
因此查询可能没有选择id
。我有一个错误:
ORA-01403:未找到数据
如何处理此问题并将id_tmp
分配给NULL
?
答案 0 :(得分:1)
假设您的查询只能返回一行或没有行,一种方法是处理NO_DATA_FOUND
:
DECLARE
id_tmp number;
BEGIN
begin
select id
into id_tmp
from (
select 1 as id
from dual
where 1=2
);
exception
when NO_DATA_FOUND then
id_tmp := null;
end;
END;
另一种方式,在相同的假设下,可以通过一个聚合函数,当查询没有返回数据时返回null
:
DECLARE
id_tmp number;
BEGIN
select max(id)
into id_tmp
from (
select 1 as id
from dual
where 1=2
);
END;
答案 1 :(得分:0)
了解errors handling。在您的情况下,您应该对预定义的错误NO_DATA_FOUND
感兴趣。你必须捕获错误并在那里为id_tmp赋值。