JMeter:如何处理Oracle12c中的隐式结果?ORA-20999:Oracle错误::ORA-29478:无法通过此语句返回隐式结果

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

在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 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还不支持这个特性

  • 您需要下载并将其放入。删除所有以前的JDBC驱动程序并重新启动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小时后接受自己的答案。