Postgresql中的函数嵌套调用



当我执行Test1((时,它会给我输出,但当我执行Test2((时会给出以下错误

查询的结构与函数结果类型不匹配

返回的类型记录与列1中的预期类型数字不匹配。

有人能告诉我我错过了什么吗。

CREATE OR REPLACE FUNCTION "Test1" (i_emp_id double precision, OUT o_emp_term_detail_id double precision, OUT o_term_id double precision, OUT o_term_start_date timestamp without time zone)
RETURNS record
LANGUAGE plpgsql
SECURITY DEFINER
AS $function$
begin
//logic
END;
$function$;
CREATE OR REPLACE FUNCTION "Test2"(i_emp_id double precision, OUT o_emp_term_detail_id double precision, OUT o_term_id double precision, OUT o_term_start_date timestamp without time zone)
RETURNS record
LANGUAGE plpgsql
SECURITY DEFINER
AS $function$
begin
select Test1(i_emp_id);
END;
$function$;
CREATE OR REPLACE FUNCTION "Test1" (i_emp_id double precision, OUT o_emp_term_detail_id double precision, OUT o_term_id double precision, OUT o_term_start_date timestamp without time zone)
RETURNS SETOF record
LANGUAGE plpgsql
SECURITY DEFINER
AS $function$
begin
return query values(1.1::float,1.1::float,now()::timestamp);
END;
$function$;
CREATE OR REPLACE FUNCTION "Test2"(i_emp_id double precision, OUT o_emp_term_detail_id double precision, OUT o_term_id double precision, OUT o_term_start_date timestamp without time zone)
RETURNS SETOF record
LANGUAGE plpgsql
SECURITY DEFINER
AS $function$
begin
RETURN QUERY select * FROM  "Test1"(i_emp_id) t;
END;
$function$;

您的查询存在几个语法问题。下面是一个基于您的输入的工作示例。

最新更新