我很想从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/

10-10 01:18