0

我在 PostgreSQL(11.5 版)中创建了一个用户定义的类型。

CREATE TYPE key_type AS (key_no character varying(50), key_nm character varying(128));

我创建了下面的函数,输入参数类型key_type[]TEXT.

create or replace function fn_net(inp IN key_type[]) returns TEXT as........

但我无法调用该函数,我尝试如下。

do  
$$  
declare  
v_key key_type[];  
v_res TEXT;  
begin  
v_key.key_no := '709R';  
v_key.key_nm := 'Risk';  
select * from fn_det(v_key) into v_res;  
raise notice '%', v_res;  
end;  
$$  
language plpgsql;

我收到格式错误的数组错误或函数不存在错误。请帮助我了解如何正确传递输入。

注意:如果我将输入类型指定为key_type而不是,我能够成功运行,key_type[]但我需要数组类型来满足要求。

4

1 回答 1

1

您的变量分配错误,您需要提供要为其分配元素的数组索引。

当您调用返回单个值的函数时,您不需要 PL/pgSQL 中的 SELECT,只需分配结果:

do  
$$  
declare  
  v_key key_type[];  
  v_res TEXT;  
begin  
  v_key[1] := ('709R', 'Risk'); -- first array element
  v_key[2] := ('711X', 'Risk2'); -- second array element
  v_res := fn_det(v_key);  
  raise notice '%', v_res;  
end;  
$$  
language plpgsql;
于 2020-07-22T20:11:36.650 回答