Postgresql поддерживает параметры OUT
, начиная с версии 8.1.В pgplsql параметр OUT задается немного иначе, чем в PL / SQL - вы ставите OUT
перед именем параметра, а не после него.Таким образом, ваша процедура должна быть определена как
CREATE OR REPLACE FUNCTION test(IN i_emp_name text,
IN i_emp_ID numeric,
OUT o_flag numeric,
OUT emp_joining_date timestamp without time zone,
OUT emp_last_date timestamp without time zone,
OUT emp_sal double precision
) LANGUAGE plpgsql
AS $function$ ...
Обратите внимание, что функции с выходными параметрами обрабатываются как возвращающие запись, поэтому определение возвращаемой записи не требуется.Также обратите внимание, что никакой другой возвращаемый тип не определен, потому что неявная запись параметров OUT
становится возвращаемым типом.Вы могли бы вызвать выше, как
SELECT test('Bob', '1').emp_sal;
, и это должно отображать зарплату Боба.Или вы можете сделать
select * from test('Bob', '1');
, и он должен отобразить что-то вроде
o_flag emp_joining_date emp_last_date emp_sal
1 11-Jan-2016 28-Nov-2017 1000000.00
См. это немного запутанное сообщение в журнале , это несколько лучший урок и конечно, всегда есть документация (см. 'argmode') .