Postgres未分配记录,有没有办法测试null?

时间:2015-06-11 16:24:12

标签: postgresql postgresql-9.3 sql-null

有没有办法测试null的未分配记录? (抱歉,sqlfiddle不喜欢我的DO阻止。)谢谢。

DO
$$
DECLARE
r record;
BEGIN

r := null;

if r is null    -- ERROR:  record "r" is not assigned yet
then
end if;

END
$$;

3 个答案:

答案 0 :(得分:6)

写下:

可以避免错误
   select null into r;

或者:

   r:=row(null);

使r以元组结构初始化。

但是,请注意,记录变量在其他有关NULL的方式中是不直观的,并且通常很难在其基本用例之外使用(游标式迭代)。

答案 1 :(得分:1)

如果使用异常处理程序包装测试,则可以使用"未初始化"检查错误。

DO $$
DECLARE
r record;
BEGIN

r := null;

  BEGIN
    IF r IS NOT NULL THEN
        raise notice 'R IS INITIALIZED';
    END IF;
  EXCEPTION
    WHEN OTHERS THEN
        raise notice 'R IS NOT INITIALIZED';
  END;

END
$$;

答案 2 :(得分:0)

select *
from t
where id = p_id
into r;

if found then
...
else
...
end if;

https://www.solvingsoftware.dev/testing-for-an-empty-record-variable-in-postgresql/