postgres存储过程的创建及其返回类型

来源:互联网 发布:空间和域名是什么 编辑:程序博客网 时间:2024/06/03 17:59

 postgres存储过程的创建及其返回类型    

1.多个结果集返回游标

 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       return query(             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          return 0;   END;   $BODY$   LANGUAGE plpgsql VOLATILE   COST 100;
0 0
原创粉丝点击