如果没有返回结果,如何将变量赋为“ null”?

时间:2018-07-26 20:41:37

标签: sql oracle plsql

当前有一个名为VALUE的变量,需要分配一个数值,以便存储的过程不会出错。当前数据库中每个小时都没有数据,因此当数据库达到前一个小时没有数据的位置时,整个过程都会出错(因为没有返回任何内容)。如果没有返回结果,是否可以将 null 分配给VALUE?下面是我的“ SELECT INTO”代码:

SELECT VALUE
  INTO v_PRIOR__VALUE
  FROM VALUE V
 WHERE CODE = rCode
   AND TIME = rTIME - 1/24;

2 个答案:

答案 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)的聚合查询总是返回恰好一行。