使用 Spring JdbcTemplate 中的调用调用存储函数

Calling stored function using call in Spring JdbcTemplate

    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

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

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

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