我有以下功能规范:
FUNCTION FUNC_GET_SOMETHING_FROM_DATABASE ( IN_parameter1 IN VARCHAR2, IN_parameter2 IN VARCHAR2, IN_parameter3 IN VARCHAR2, IN_parameter4 IN VARCHAR2, IN_parameter5 IN VARCHAR2, IN_parameter6 IN VARCHAR2) 返回 REFURTYP;
以下是我在 Java 中调用 Oracle 中的函数的方法:
公共列表<SomeVO> getLogReport( 字符串参数1,字符串参数2,字符串参数3, 字符串参数4,字符串参数5, 字符串参数6) 抛出 BlahException, RemoteDataAccessException { 矢量<对象> 参数 = 新矢量<对象>(); DataCollectionImpl<LogReportVO> someData = new DataCollectionImpl<LogReportVO>( 日志报告VO.class); // 输入参数 params.add(parameter1); params.add(parameter2); params.add(parameter3); params.add(parameter4); params.add(parameter5); params.add(parameter6); //输出参数 params.add(new DBParameter(DBParameter.OUT, DBParameter.CURSOR)); 尝试 { 调用存储过程( 常量.FUNC_GET_SOMETHING_FROM_DATABASE,参数); } 捕捉(远程数据访问异常 e){ throw new BlahException("LogReportDAO", "getLogReport", e.getMessage(), e.getRealException()); } 返回 someData.getDataCollectionObjects(); }
我得到的错误是:
wrong number or types of arguments in call
附加信息:
protected void callStoredProcedure(String procedureName, Vector params) 抛出 RemoteDataAccessException { callStoredProcedure(getSchema(), procedureName, params); } protected void callStoredProcedure(String schema, String procedureName, Vector params) 抛出 RemoteDataAccessException { callStoredProcedure(getDatasource(), 模式, procedureName, params); } protected void callStoredProcedure(String dataSourceName, String schema, String procedureName, Vector params) 抛出 RemoteDataAccessException { getOracleConnection(dataSourceName).callStoredProcedure( getFullyQualifiedProcedureName(schema, procedureName), params); } 私有OracleConnection getOracleConnection(字符串数据源){ OracleConnection oraConn = null; 尝试 { oraConn = new OracleConnection(datasource); } 捕捉(RemoteDataAccessException rdae){ log.fatal("BaseDAO.getOracleConnection" + rdae.getMessage(), rdae); } 捕捉(即例外){ log.fatal("BaseDAO.getOracleConnection" + ie.getMessage(), ie); } 返回 oraConn; }