【问题标题】:Calling stored function using call in Spring JdbcTemplate在 Spring JdbcTemplate 中使用 call 调用存储的函数
【发布时间】:2017-05-09 05:29:53
【问题描述】:
    CREATE OR REPLACE PACKAGE BODY pk_sahil AS  
      procedure squareNumDummy(x in number,y in number) is
      begin
        dbms_output.put_line(x*y);
        insert into sahil values('package',111);
      end squareNumDummy;
      function sumFun( x in number , y in number ) return number is
      begin
        insert into sahil values('function',222);
        return x+y;
      end sumFun;
    END pk_sahil; 
    /
    create or replace package pk_sahil as
      procedure squareNumDummy(x in number, y in number);
      function sumFun(x in number, y in number ) return number;
    end pk_sahil;
    /

我已经制作了这个包,其中包含一个函数和一个过程,我正在尝试使用 spring jdbctemplate 从我的 java 代码中调用它们。但程序运行正常但无法调用该函数。

int param1 =5 , param2 = 10;
jdbcTemplate.update( "call pk_sahil.squareNumDummy(?,?)",param1,param2);

此程序运行良好。

jdbcTemplate.update( "call pk_sahil.sumFun(?,?)",param1,param2);

在运行这个函数时,我遇到了错误

console log of error

请纠正我是否没有正确调用该函数或者我需要处理函数的返回变量?如何从 jdbctemplate.update(' call... ') 方法中调用该函数?

【问题讨论】:

标签: java spring spring-jdbc jdbctemplate


【解决方案1】:

您可以从jdbcTemplate.queryForObject() 调用存储函数,如下所示:

int sum = jdbcTemplate.queryForObject("SELECT pk_sahil.squareNumDummy(?,?)", new Object[] {param1,param2});

【讨论】:

  • 2021:queryForObject 在没有行映射器的情况下不再工作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
相关资源
最近更新 更多