gpt4 book ai didi

sql - 如何修复域 tebool 在 plpgsql 函数中不允许空值

转载 作者:行者123 更新时间:2023-11-29 13:26:54 26 4
gpt4 key购买 nike

我正在寻找从 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 中)明显的解决方法:明确地初始化它(为 true 或 false):

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com