使用Spring StoredProcedure类调用Oracle函数

时间:2013-11-03 05:20:16

标签: spring

我有一个Oracle功能如下:

FUNCTION GetDetails (Acct_No IN VARCHAR2, Qtype IN VARCHAR2, MaxRecs IN NUMBER DEFAULT 500, Debug IN NUMBER DEFAULT 0, p_ErrorCode OUT NUMBER) RETURN SYS_Refcursor    

我使用Spring StoredProcedure类来调用此函数,如下所示:

public GetDetailsStoredProcedure(JdbcTemplate jdbcTemplate, int type) {        

        super(jdbcTemplate, "GetDetails");         

        RowMapper<?> rowMapper = new CadreAuthorizationRowMapper();

        setFunction(true);

        declareParameter(new SqlReturnResultSet(Constants.FUN_OUT_RESULT_LIST, rowMapper));

        declareParameter(new SqlParameter(Constants.FUN_IN_CARD_NUMBER, OracleTypes.VARCHAR));        
        declareParameter(new SqlParameter(Constants.FUN_IN_REQ_TYPE, OracleTypes.VARCHAR));        
        declareParameter(new SqlParameter(Constants.FUN_IN_MAX_REC, OracleTypes.NUMERIC));
        declareParameter(new SqlParameter(Constants.FUN_IN_DEBUG, OracleTypes.NUMERIC));
        declareParameter(new SqlOutParameter(Constants.FUN_OUT_ERROR_CODE, OracleTypes.NUMERIC));

        compile();    
    }   

我遇到的问题是,Spring没有采用所有的DeclaredParameters来准备SQL字符串,它正在跳过DeclapredParameter之一,因为它使用它来定义返回值...所以我最终少了一个“?”在Callable SQL字符串中。

这就像任何正常的Oracle函数一样,它返回一个refcursor和一个OUT参数,它接收4 IN参数。

0 个答案:

没有答案