からOracle関数を呼び出します。私は、機能仕様を以下しているJavaの
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) RETURN REFCURTYP;
に続いて、オラクルの関数を呼び出しているJavaでの私の方法です:
public List<SomeVO> getLogReport( String parameter1, String parameter2, String parameter3, String parameter4, String parameter5, String parameter6) throws BlahException, RemoteDataAccessException { Vector<Object> params = new Vector<Object>(); DataCollectionImpl<LogReportVO> someData = new DataCollectionImpl<LogReportVO>( LogReportVO.class); // IN Parameters params.add(parameter1); params.add(parameter2); params.add(parameter3); params.add(parameter4); params.add(parameter5); params.add(parameter6); //Out Parameter params.add(new DBParameter(DBParameter.OUT, DBParameter.CURSOR)); try { callStoredProcedure( Constants.FUNC_GET_SOMETHING_FROM_DATABASE, params); } catch (RemoteDataAccessException e) { throw new BlahException("LogReportDAO", "getLogReport", e.getMessage(), e.getRealException()); } return someData.getDataCollectionObjects(); }
私は取得していますエラーは次のとおりです。
wrong number or types of arguments in call
追加情報:
protected void callStoredProcedure(String procedureName, Vector params) throws RemoteDataAccessException { callStoredProcedure(getSchema(), procedureName, params); } protected void callStoredProcedure(String schema, String procedureName, Vector params) throws RemoteDataAccessException { callStoredProcedure(getDatasource(), schema, procedureName, params); } protected void callStoredProcedure(String dataSourceName, String schema, String procedureName, Vector params) throws RemoteDataAccessException { getOracleConnection(dataSourceName).callStoredProcedure( getFullyQualifiedProcedureName(schema, procedureName), params); } private OracleConnection getOracleConnection(String datasource) { OracleConnection oraConn = null; try { oraConn = new OracleConnection(datasource); } catch (RemoteDataAccessException rdae) { log.fatal("BaseDAO.getOracleConnection " + rdae.getMessage(), rdae); } catch (Exception ie) { log.fatal("BaseDAO.getOracleConnection" + ie.getMessage(), ie); } return oraConn; }
は今までMybatis3のように、JDBCのラッパーを使用して考えます。複雑なタイプの作業をすると、作業が楽になります。 http://code.google.com/p/mybatis/ – Andy
あなたは正しいですが、今は時間が重要なので、私はそれが可能と考えていません。私はOUTパラメータに問題があると思います。あなたはこれを回避する方法を知っていますか? – Bytekoder
私は本当にありません。 MyBatisで可能なことはすべて知っています。 Outパラメータは、パラメータオブジェクトのフィールドに設定されます。申し訳ありませんが私はあなたのための答えを思い付くことができませんでした。 – Andy