database compatibility assessment

ORACLE WHERE CURRENT OF 游标定位 DML 迁移 postgresql 16 怎么改

迁衡基于规则 ora.syntax.where_current_of 分析 ORACLE WHERE CURRENT OF 游标定位 DML 到 postgresql 16 的兼容性、改写路径与验证建议。

兼容性判定

真机验证:gaussdb 505 · WHERE CURRENT OF 需游标可更新性与锁语义验证,建议改主键定位
支持度partial
严重度major
置信度high
依据规则ora.syntax.where_current_of

怎么改

需按命中位置逐条评估改写

判定说明

WHERE CURRENT OF 需游标可更新性与锁语义验证,建议改主键定位

库侧 / 应用侧路径

库侧改造

可行:游标 SELECT 同步取主键,DML 改 WHERE pk = 当前行 pk

应用侧改造

可行:批处理循环改应用层主键定位更新/删除

推荐路线:db_side。验证建议:游标结果集有重复业务键时必须验证定位行唯一性。

规则样例

UPDATE emp SET sal = sal + 1 WHERE CURRENT OF c_emp
DELETE FROM emp WHERE CURRENT OF c1
UPDATE emp SET sal = sal + 1 WHERE empno = :id