JMeter:如何处理Oracle12c中的隐式结果?ORA-20999:Oracle错误::ORA-29478:无法通过此语句返回隐式结果
在Oracle数据库中通过JMeter调用存储过程时,我遇到以下错误:JMeter:如何处理Oracle12c中的隐式结果?ORA-20999:Oracle错误::ORA-29478:无法通过此语句返回隐式结果,oracle,jmeter,Oracle,Jmeter,在Oracle数据库中通过JMeter调用存储过程时,我遇到以下错误: ORA-20999:Oracle错误::ORA-29478:无法通过此语句返回隐式结果 我没有10个名声,所以我不能发布图片。我将描述配置 这是我的JDBC连接信息: Max Number of Connections:0 Max Wait (ms):10000 Time Between Eviction Runs (ms): 60000 Auto Commit: True Transaction Isola
ORA-20999:Oracle错误::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
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
这是我的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
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
这是我得到的错误:
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
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¿
我已经确认可以建立数据库连接,因为select查询可以顺利进行
Oracle 12c中引入了隐式结果(或隐式游标)。到目前为止有人碰到过这个问题吗?我是否应该以调用存储过程的方式更改某些内容?或者这仍然可能是一个驱动程序问题?或者是JMeter还不支持这个特性
可调用语句
作为查询类型
看起来您仍在使用11g版本的ojdbc驱动程序。
检查
JMETER_HOME/bin/user.properties中的user.classpath
属性值,以确保在JMETER_HOME/lib
中正确使用Oracle12c的ojdbc7.jar版本。经过一些挖掘,我发现这不是驱动程序问题。实际上是另外一回事。我使用了错误的语法来调用存储过程
所以我最初的语法是:
call _stored_procedure_()
call office_hierarchy()
BEGIN
_stored_procedure_();
END;
BEGIN
office_hierarchy();
END;
但是,正确的语法是:
call _stored_procedure_()
call office_hierarchy()
BEGIN
_stored_procedure_();
END;
BEGIN
office_hierarchy();
END;
这将解决这个问题,JMeter现在返回结果集而没有任何问题
谢谢大家的帮助。根据现场规则,我将在48小时后接受业主的答复。当然,欢迎其他人的意见 显示您的JDBC请求,并尝试使用查询类型Callable语句
Hi user7294900,谢谢您的建议。我已经用更多的信息更新了我最初的问题,我希望我的问题现在更清楚。很遗憾,我无法包含图像,因为我还没有10个声誉。请尝试在配置中将事务隔离
更改为默认
感谢用户7294900的输入。我尝试更改事务隔离,但最终发现错误与我的语法有关。我在下面贴了一个答案,我在这里详细解释了这一点。嗨,德米特里,谢谢你的建议。我试过你的方法,但没有解决我的问题。我已经相应地更新了我的初始问题。嗨,瓦迪姆,谢谢你的回答。在检查我的司机时,我完成了这些步骤。我用ojdbc6.jar、ojdbc7.jar和新的ojdbc8.jar进行了尝试。经过一些分析,我发现我的语法是错误的。我在这一页上添加了一个详细解释语法错误的答案。@JohanK好极了!但是接受你的答案可以帮助别人找到它。你应该接受你的答案,这样别人才能相信它。谢谢你的贡献,谢谢你的建议。我试着接受我的答案,但一个验证突然冒出来,我只能明天接受我的答案。我在“帮助”部分发现,您只能在48小时后接受自己的答案。