有没有办法测试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
$$;
答案 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/