JMeter JDBC采样器分步执行Oracle存储过程报ORA-00922错误如何解决
问题原因
你遇到的ORA-00922报错,核心是执行脚本用的工具不兼容SQL*Plus专属语法,而Oracle SQL Developer默认支持这类扩展语法,所以同一份脚本两边执行结果不一样。
解决方案
- 移除所有SQLPlus专属配置指令
脚本步骤1里的SET ECHO ON、SET FEEDBACK ON、SET VERIFY ON、SET SERVEROUTPUT ON SIZE 1000000;都是SQLPlus用来控制输出日志的指令,不属于标准SQL/PLSQL语法,普通JDBC等直连客户端识别不了,直接删掉即可,不影响业务逻辑执行。 - 替换EXEC存储过程调用写法
EXEC是SQL*Plus的简写语法,标准执行需要改成匿名块包裹的形式:
把所有的EXEC FWA_BATCH_PROCESSOR.SETUTLFILEOFF;、exec fwa_batch_processor.process_batch;都替换为:BEGIN FWA_BATCH_PROCESSOR.SETUTLFILEOFF; END; /BEGIN fwa_batch_processor.process_batch; END; / - 调整语句分隔符配置
你用的执行工具如果默认按分号;拆分语句,步骤3里的匿名PL/SQL块内部的分号会被误识别为单条语句结束,导致语法报错。需要把工具的语句分隔符修改为/,或者在每一段匿名块的末尾单独加一行/作为结束标记。 - 权限验证
如果单独执行UPDATE语句仍报错,确认当前连接的Oracle用户拥有FWA_PROCESSING、FWA_ERRORS等所有涉及表的读写权限,同时确认表名、字段名没有拼写错误,也没有大小写敏感的引号包裹问题。
内容的提问来源于stack exchange,提问作者user16923013
相关产品推荐
相关产品推荐

