postgresql - 在 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 中这相当于什么?
解决方案
推荐阅读
- kubernetes - 在 pourcent 中设置限制 CPU 水平 Pod 自动缩放
- javascript - 如何正确使用 while 循环来大写文本字段内容,直到找到一个空字段?
- c# - 哪种方法更好:使用 EventLogReader 查询或使用 EntryWrittenEventHandler 获得通知?
- angular - 无法在 Angular 6 服务中找到“地图”
- pytest - 具有来自另一个夹具的参数化的 pytest 夹具
- python - Keras BatchNorm 层在训练和推理期间给出奇怪的结果
- javascript - Chrome 不支持 getUserMedia
- perl - 需要将二进制值转换为数字
- android - 从链接到我的应用程序的电话簿中删除联系人
- javascript - npm 检查需要哪个包子包