Вложенный вызов функции в Postgresql - PullRequest
0 голосов
/ 02 ноября 2018

Когда я выполняю 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$;

1 Ответ

0 голосов
/ 02 ноября 2018
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$;

В вашем запросе есть несколько синтаксических проблем. Вот рабочий пример, основанный на ваших данных.

...