pg数据库中游标的使用

游标介绍:

游标是一种从表中检索数据并进行操作的灵活手段,游标主要用在服务器上,处理由客户端发送给服务端的sql语句,或是批处理、存储过程、触发器中的数据处理请求。
游标的一个常见用途就是保存查询结果,以便以后使用。

游标使用顺序:

声明游标 > 打开游标 > 使用游标 > 关闭游标 。

使用游标的案例:

使用游标,把表中的类型查询出来放到游标中,循环游标的内容,更新表

CREATE OR REPLACE PROCEDURE public.proc_dev_update_ranking(i_startdate text, i_enddate text, INOUT o_errcode text DEFAULT NULL::text, INOUT o_errmsg text DEFAULT NULL::text)
 LANGUAGE plpgsql
AS $procedure$
    
DECLARE
		-- 定义变量,用来存储从游标中获取到的值
    kind_name_1 varchar;
     --声明游标 
     -- 把fof_fund_performance_ranking表中的kind去重后的结果集存放到游标中       
    cur cursor for     
    SELECT DISTINCT kind FROM fof_fund_performance_ranking;

begin
    -- 打开游标 第一条记录
    open cur;
    -- 循环开始
    loop
    --获取游标中的当前行信息
    fetch next from cur into kind_name_1;
    exit when not found;
         --更新排名
        update fof_fund_performance_ranking aa
        set ranking =ranking_1
        from
        ( select *,row_number() over(partition by trd_dt,period,kind order by kind_value  DESC) ranking_1
            from fof_fund_performance_ranking
            where kind =kind_name_1 
        ) as bb
        where aa.trd_dt =bb.trd_dt and aa.period=bb.period and aa.kind =bb.kind and aa.scr_id =bb.scr_id;
    
    -- 结束循环
    end loop;
    --关闭游标
close cur;
    
    END;
    $procedure$
;
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值