首页 > 解决方案 > 在 postgres 11.2 中使用光标批量收集

问题描述

我正在从 Oracle 迁移到 postgresql。我在 Oracle 中使用带游标的批量收集。我如何在 postgres 中实现相同的目标。我尝试插入..从中选择。它不起作用。我是 postgres 的新手。我在 Oracle 中有下一个代码。

PROCEDURE DEAL_CONVRSNL(ERR_CODE OUT NUMBER, DEAL_ERR OUT VARCHAR2) IS

V_DLHSTDT     ITMDEALEXT.IDLDEALSTDT%TYPE;
v_count     number(1);

CURSOR CUR_GET_DLHHDR IS select .... GROUP BY DLHVALUE

TYPE TYP_GET_DLHHDR IS TABLE OF CUR_GET_DLHHDR%ROWTYPE INDEX BY BINARY_INTEGER;
REC_GET_DLHHDR TYP_GET_DLHHDR;

BEGIN

OPEN CUR_GET_DLHHDR;
LOOP
  FETCH CUR_GET_DLHHDR BULK COLLECT
    INTO REC_GET_DLHHDR LIMIT 1500;

  FOR I IN 1 .. REC_GET_DLHHDR.COUNT LOOP
      V_IDLDEALTYPE := REC_GET_DLHHDR(I).DLHTYPE;

begin
      SELECT COUNT(1)
        into v_count
        FROM dlhhdr
       where dlhextno = V_DLHEXTNO

  BEGIN
       IF v_count = 0 THEN

         INSERT INTO DLHHDR DLHVALUE VALUES REC_GET_DLHHDR(I).DLHVALUE
    else
         UPDATE DLHHDR
           SET DLHVALUE    = REC_GET_DLHHDR(I).DLHVALUE,

我试过array_agg。在使用 array_agg 时遇到了困难。在 postgres 中这相当于什么?

标签: postgresql

解决方案


推荐阅读