当前有一个名为VALUE的变量,需要为它赋一个数值,以便存储的proc不会出错。目前在数据库中没有每小时的数据,所以当它到达前一小时没有数据的点时,整个过程就会出错(因为没有返回任何数据)。如果没有返回结果,有没有一种方法可以将null赋值给VALUE?下面是我的“SELECT INTO”代码:
SELECT VALUE
INTO v_PRIOR__VALUE
FROM VALUE V
WHERE CODE = rCode
AND TIME = rTIME - 1/24;
发布于 2018-07-27 04:46:49
或者,您可以实际处理这样的情况:
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;
发布于 2018-07-27 04:42:57
如果您期望0行或1行,那么我认为最简单的方法是聚合:
SELECT MAX(VALUE)
INTO v_PRIOR__VALUE
FROM VALUE V
WHERE CODE = rCode AND TIME = rTIME - 1/24;
没有GROUP BY
(或HAVING
)的聚合查询始终只返回一行。
https://stackoverflow.com/questions/51547218
复制相似问题