gpt4 book ai didi

postgresql - Postgres : ERROR: value too long for type character(4)

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

我是 Postgres 的新手,目前正在尝试编写一个接受整数的函数,然后使用该输入调用另一个(绝对有效的)预写函数。如果我直接调用预先写好的函数,例如:

select * from func(3456789);

我得到了我期望的结果,没有错误。但是,如果我在我的函数中调用它:

create or replace function my_func(_id integer)
returns setof Record
as $$
declare
rec Record;
begin
for rec in
select * from func(_id)
loop
return next rec;
end loop;

end;
$$ language plpgsql
;

我用完全相同的参数调用它:

select * from my_func(3456789);

我收到以下错误:

ERROR:  value too long for type character(4)
CONTEXT: PL/pgSQL function my_func(integer) line 5 at FOR over SELECT rows

为什么这两种情况不同,我该如何解决?

编辑:

func(_sid) 返回这个:

CREATE FUNCTION func(_sid integer) RETURNS SETOF Record
LANGUAGE plpgsql
AS $$ ...

Record 是这样定义的:

create type Record as (code char(8), name char(4), num integer, work char(4));

最佳答案

函数 func 返回的每一行都映射到一个 Record。所以你得到的错误是说函数结果中的一行在 name 和/或 work 的列位置包含一个大于列所需值的值(即 4)。

关于postgresql - Postgres : ERROR: value too long for type character(4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49775775/

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