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

本文介绍如何在Postgres中创建存储过程并返回不同类型的值,包括游标、自定义类型、表格及单一值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值