在Oracle数据库中通过JMeter调用存储过程时,出现以下错误:
sudo apt install gconf
我没有10个声誉,因此无法发布图片。我将描述配置。
这是我的JDBC连接信息:
ORA-20999: Oracle ERROR:: ORA-29478: Implicit result cannot be returned through this statement
这是我的JDBC Request Sampler信息:
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()
我特意用XXXX替换了用户。
我正在设置一个JMeter测试脚本,在其中我在Oracle数据库中调用存储过程。 Oracle数据库的版本为12C。我使用Oracle网站上的最新版本ojdbc8.jar。我也从Oracle网站尝试过ojdbc6.jar和ojdbc7.jar。我的Jmeter在5.0 r1840935上。我的Java版本是1.8.0_191。
我已经确认可以建立数据库连接,因为可以进行选择查询而不会出现问题。
隐式结果(或隐式游标)已在Oracle 12c中引入。到目前为止,有人遇到过这个问题吗?我应该以调用存储过程的方式进行更改吗?还是这仍然是驱动程序问题?还是JMeter尚不支持此功能?
答案 0 :(得分:2)
经过一番挖掘,我发现这不是驱动程序问题。实际上是另外一回事。我使用了错误的语法来调用存储过程。
所以我的原始语法是:
call _stored_procedure_()
call office_hierarchy()
但是,正确的语法是:
BEGIN
_stored_procedure_();
END;
BEGIN
office_hierarchy();
END;
这将解决此问题,JMeter现在返回结果集,而没有任何问题。
感谢大家的帮助。根据网站规则,我将在48小时后接受所有者的答复。当然总是欢迎其他意见!
答案 1 :(得分:0)
确保在JDBC Request采样器中使用Callable Statement
作为查询类型
您还需要更改"Validation query" to select 1 from dual
in the JDBC Connection Configuration
答案 2 :(得分:0)
好像您仍在使用11g版本的ojdbc驱动程序。
检查user.classpath
中的JMETER_HOME/bin/user.properties
属性值,以确保您正确使用JMETER_HOME/lib
中的Oracle 12c的ojdbc7.jar版本