1

我有一个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    

我正在使用 SpringStoredProcedure类来调用此函数,如下所示:

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 参数。

4

0 回答 0