CREATE OR REPLACE FUNCTION postgres_test(v_in_param1 integer)
RETURNS refcursor AS
$BODY$
/*******************************************************************************
begin;
select * from postgres_test (1);
fetch all in "<unnamed portal 1>"
end;
*******************************************************************************/
DECLARE
v_result refcursor;
BEGIN
open v_result for
select v_in_param1 as param;
RETURN v_result;
END;
LANGUAGE plpgsql VOLATILE
$BODY$
COST 100;
2.返回type类型
新建返回类型
CREATE TYPE type_result_postgres_test AS(param integer);
创建存储过程
CREATE OR REPLACE FUNCTION postgres_test(v_in_param1 integer)
RETURNS SETOF type_result_postgres_test AS
$BODY$
/*******************************************************************************
select * from postgres_test (1);
*******************************************************************************/
BEGIN
return query (
SELECT v_in_param1 as param
);
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
3 返回TABLE
CREATE OR REPLACE FUNCTION postgres_test(v_in_param1 integer)
RETURNS TABLE("PRODUCTCD" integer, "PRODUCTNAME" character varying) AS
$BODY$
/*******************************************************************************
select * from postgres_test (1);
*******************************************************************************/
BEGIN
returnquery(
select v_in_param1 as productcd,'test'::varchar as productname
);
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
4 返回单个类型
CREATE OR REPLACE FUNCTION postgres_test(v_in_param1 integer)
RETURNS integer AS
$BODY$
/*******************************************************************************
select * from postgres_test (1);
*******************************************************************************/
BEGIN
return0;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;