Postgresql中存储过程(plpgsql)两层for循环

项目中遇到测试,需要造4500数据,而且需要分部门和日期,一个部门一天30条数据,剩下的铺垫数据可以一个部门一天100w左右数据,这里,每次变换部门,日期,需要操作至少300次,想到用存储过程写一个函数进行
首先,了解存储过程的语法:

CREATE [ OR REPLACE ] FUNCTION

   name( [ [argmode] [argname]argtype[ { DEFAULT | = }default_expr] [, ...] ] )

        [ RETURNSrettype

          | RETURNS TABLE (column_namecolumn_type[, ...] ) ]

   { LANGUAGElang_name

        | WINDOW

| IMMUTABLE | STABLE | VOLATILE

        | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT

        | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER

        | COSTexecution_cost

        | ROWSresult_rows

        | SETconfiguration_parameter{ TOvalue| =value| FROM CURRENT }

        | AS 'definition'

        | AS 'obj_file', 'link_symbol'

   } ...

        [ WITH (attribute[, ...] ) ]
————————————————

CREATE [ OR REPLACE ] FUNCTION--创建一个函数,若有此函数,即取代重新创建   
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL (pgsql) ,你可以使用嵌套循环和游标来实现两层游标循环。下面是一个示例代码,演示了如何实现两层游标循环: ```sql -- 创建外部游标 DECLARE outer_cur CURSOR FOR SELECT * FROM outer_table; -- 打开外部游标 OPEN outer_cur; -- 声明外部游标记录的变量 DECLARE outer_rec RECORD; -- 循环遍历外部游标 LOOP -- 从外部游标获取下一条记录 FETCH NEXT FROM outer_cur INTO outer_rec; -- 退出循环,如果没有更多记录 EXIT WHEN NOT FOUND; -- 创建内部游标 DECLARE inner_cur CURSOR FOR SELECT * FROM inner_table WHERE outer_id = outer_rec.id; -- 打开内部游标 OPEN inner_cur; -- 声明内部游标记录的变量 DECLARE inner_rec RECORD; -- 循环遍历内部游标 LOOP -- 从内部游标获取下一条记录 FETCH NEXT FROM inner_cur INTO inner_rec; -- 退出循环,如果没有更多记录 EXIT WHEN NOT FOUND; -- 在这里处理内部游标记录 END LOOP; -- 关闭内部游标 CLOSE inner_cur; END LOOP; -- 关闭外部游标 CLOSE outer_cur; ``` 以上代码,我们首先创建了外部游标 `outer_cur` 并打开它。然后,在外部游标的循环内,我们创建了内部游标 `inner_cur` ,并在内部游标的循环内处理内部游标的记录。最后,我们关闭了内部游标和外部游标。 注意,你需要根据你的实际需求修改示例代码的表名、字段名和条件等部分。这只是一个基本的示例,你可以根据自己的具体情况进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值