-
Data Governance Dev authored
两个 Oracle 专属问题,连续两次跑自定义规则暴露: 1) ORA-01036: illegal variable name/number - 原因:sql_builder._placeholder 旧版 Oracle 路径输出 '?',但 python-oracledb 不支持 qmark 占位符(thin 模式不会自动转 :N,必须显式给 numbered) - 修复:Bind 加 next_idx;Oracle 路径按递增编号输出 :1, :2, ...,与 bind.params 顺序一一对应 2) ORA-00933: SQL command not properly ended - 原因:step9_custom_rules 无条件拼 'LIMIT 200',Oracle 11g 不支持 LIMIT (12c 引入 FETCH FIRST;11g 只能用 WHERE ROWNUM <= N) - 修复:截断子句按 db_type 分支,Oracle 走 WHERE ROWNUM <= 200 中间 bug:Oracle 分支漏写 WHERE 关键字(FROM "tbl" "col" LIKE :1 ...), 静态验证脚本(三个方言各跑一遍)暴露后补上 WHERE。 静态验证 SQL: MySQL : SELECT `COL` FROM `TBL` WHERE `COL` LIKE %s ESCAPE '!' LIMIT 200 达梦 : SELECT "COL" FROM "TBL" WHERE "COL" LIKE ? ESCAPE '!' LIMIT 200 Oracle : SELECT "COL" FROM "TBL" WHERE "COL" LIKE :1 ESCAPE '!' AND ROWNUM <= 200 WORKLOG 待用户在 Oracle 端跑自定义规则验证后追加(不阻塞提交)f4903d81