下面的查询会批量选择然后更新循环中的记录。我想在这里使用 BULK COLLECT INTO 和 FORALL 构造来提高性能。但是查询使用 rownum 来更新循环中的列。无论如何我可以在获取 rownum 的同时使用 BULK COLLECT INTO 吗?
FOR rec IN
(SELECT rownum rn,
b.*
FROM
(SELECT *
FROM temp_final a
WHERE reid = 1
AND retype = 9
AND sid = 'r123'
AND pid = 2191
ORDER BY a.horder DESC nulls last,
sname ,
rowgroup ,
dpct DESC nulls last ,
name
) b
)
LOOP
UPDATE temp_final
SET horder=rec.rn
WHERE reid = 1
AND retype = 9
AND sid = 'r123'
AND pid = 2191
AND mid =rec.mid;
END LOOP;
谢谢