我很想从Postgres 9.1开始在plpgsql mathod中使用tebool类型的记录
我试过了
CREATE DOMAIN tebool AS bool DEFAULT false NOT NULL;
create temp table test ( test tebool ) on commit drop ;
CREATE OR REPLACE FUNCTION test()
RETURNS numeric AS $$
DECLARE
r_test test;
begin
return 0;
end; $$ language plpgsql;
select test();
但有错误
ERROR: domain tebool does not allow null values
CONTEXT: PL/pgSQL function test() line 5 during statement block local variable initialization
********** Error **********
ERROR: domain tebool does not allow null values
SQL state: 23502
Context: PL/pgSQL function test() line 5 during statement block local variable initialization
如何解决这个问题以便创建这样的记录变量?
域tebool的默认值为false,因此plpgsql必须对其赋值为false,并且不应引发错误。
最佳答案
似乎域类型的默认值没有用作初始值设定项(在plpgsql中)
明显的解决方法:明确地初始化它(正确或错误):
CREATE DOMAIN tebool AS bool DEFAULT false NOT NULL;
CREATE temp table ztest ( ztest tebool ) on commit drop ;
CREATE OR REPLACE FUNCTION ztest()
RETURNS numeric AS $$
DECLARE
r_test tebool = False;
BEGIN
RETURN 0;
END; $$ language plpgsql;
SELECT ztest();
关于sql - 如何修复域tebool在plpgsql函数中不允许空值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32157166/