当前有一个名为VALUE的变量,需要分配一个数值,以便存储的过程不会出错。当前数据库中每个小时都没有数据,因此当数据库达到前一个小时没有数据的位置时,整个过程都会出错(因为没有返回任何内容)。如果没有返回结果,是否可以将 null 分配给VALUE?下面是我的“ SELECT INTO”代码:
SELECT VALUE
INTO v_PRIOR__VALUE
FROM VALUE V
WHERE CODE = rCode
AND TIME = rTIME - 1/24;
答案 0 :(得分:4)
或者,您实际上可以处理这种情况:
declare
v_prior__value value.value%type;
begin
SELECT VALUE
INTO v_PRIOR__VALUE
FROM VALUE V
WHERE CODE = rCode
AND TIME = rTIME - 1/24;
exception
when no_data_found then
null; -- v_prior_Value will remain NULL, as declared in the DECLARE section
when too_many_rows then
v_prior_Value := -1; -- this is just an example; you'd handle it the way you want
end;
答案 1 :(得分:2)
如果期望0行或1行,那么我认为最简单的方法是聚合:
SELECT MAX(VALUE)
INTO v_PRIOR__VALUE
FROM VALUE V
WHERE CODE = rCode AND TIME = rTIME - 1/24;
没有GROUP BY
(或HAVING
)的聚合查询总是返回恰好一行。