我想使用java调用Oracle Sql函数。但我收到错误
java.sql.SQLException: Missing IN or OUT parameter at index:: 4
有人可以帮我解决这个问题吗?
下面是读取Oracle SQL Function的语句。
DECLARE
ID VARCHAR2(10);
date1 DATE;
output PL/SQL RECORD;
BEGIN
ID := '1234';
date1 := to_date('2018-05-15','yyyy-MM-dd');
output := Function1(
ID => I_EMPL_ID,
date1 => I_BALANCE_DATE
);
END;
下面是我在java中用于调用函数的代码:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yy");
Date now = new java.sql.Date(simpleDateFormat.parse("17-MAY-18").getTime());
CallableStatement cstmt = con.prepareCall("{? = call Function1(?,?,?)}");
cstmt.setString(1, "1234");
cstmt.setDate(2, now);
cstmt.registerOutParameter(3, Types.ROWID);
cstmt.execute();
当我执行此代码时,出现以下错误:
java.sql.SQLException: Missing IN or OUT parameter at index:: 4
有人可以帮我解决这个问题吗?
最佳答案
CallableStatement cstmt = con.prepareCall("{? = call Function1(?,?,?)}");
有 4 个 ?
绑定(bind)参数。
^ ^ ^ ^
1 2 3 4
第一个是函数的返回值,第二个、第三个和第四个是函数的参数。
cstmt.registerOutParameter( 1, Types.ROWID );
cstmt.setString( 2, "1234" );
cstmt.setDate( 3, now );
cstmt.setInteger(4, 0 ); // Or whatever type the 3rd function argument has.
cstmt.execute();
关于java - java中读取oracle Sql函数出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50406473/