在 Oracle 数据库中通过 JMeter 调用存储过程时,出现以下错误:
ORA-20999: Oracle ERROR::ORA-29478: 无法通过此语句返回隐式结果
我没有 10 声望,所以无法发布图片。我将描述配置。
这是我的 JDBC 连接信息:
Max Number of Connections:0
Max Wait (ms):10000
Time Between Eviction Runs (ms): 60000
Auto Commit: True
Transaction Isolation:TRANSACTION_READ_COMMITTED
Test While Idle: True
Soft Min Evictable Idle Time (ms): 5000
Validation Query: select 1 from dual
JDBC Driver Class: oracle.jdbc.OracleDriver
这是我的 JDBC 请求采样器信息:
Query Type: Callable Statement
Procedure: call office_hierarchy()
这是我收到的错误:
ORA-20999: Oracle ERROR:: ORA-29478: Implicit result cannot be returned through this statement
ORA-06512: at 'XXXX.UTILS", line 2019
ORA-06512: at "XXXX.OFFICE_HIERARCHY", line 39
我特意用 XXXX 替换了我的用户。
我正在设置一个 JMeter 测试脚本,在其中调用 Oracle 数据库中的存储过程。 Oracle 数据库的版本为 12C。我使用 Oracle 网站上的最新版本 ojdbc8.jar。我还尝试了 ojdbc6.jar 和 ojdbc7.jar,也来自 Oracle 网站。我的 Jmeter 版本为 5.0 r1840935。我的java版本是1.8.0_191。
我已经确认可以建立数据库连接,因为可以毫无问题地进行选择查询。
Oracle 12c 中引入了隐式结果(或隐式游标)。到目前为止有人遇到过这个问题吗?我应该改变调用存储过程的方式吗?或者这仍然是一个驱动程序问题?或者说 JMeter 还不支持这个功能?
最佳答案
经过一番挖掘,我发现这不是驱动程序问题。实际上是别的东西。我使用了错误的语法来调用存储过程。
所以我原来的语法是:
call _stored_procedure_()
call office_hierarchy()
但是,正确的语法是:
BEGIN
_stored_procedure_();
END;
BEGIN
office_hierarchy();
END;
这将解决这个问题,JMeter 现在返回结果集没有任何问题。
感谢大家的帮助。根据网站规则,我将在 48 小时后接受业主的答复。当然,我们始终欢迎其他意见!
关于oracle - JMeter:Oracle 12C 中如何处理隐式结果? ORA-20999: Oracle ERROR::ORA-29478: 无法通过此语句返回隐式结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54183410/