首页 > 解决方案 > 从 storedFunction 传递 Char 时的 Oracle-17132

问题描述

我的 StoredFunction 遇到问题。它看起来微不足道,但我没有看到解决它的方法。

Oracle DB 包含一个具有以下签名和一些简单主体的函数

FUNCTION  MY_FUNC (CARD_NUM_IN in char, CARD_ID number default null) 
return number;

我执行对函数的调用如下:

SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(dataSource);
SqlParameterSource sps = new MapSqlParameterSource()
        .addValue("CARD_NUM_IN", ' ', OracleTypes.CHAR)
        .addValue("CARD_ID", Long.parseLong(cardId), OracleTypes.NUMBER);
simpleJdbcCall
        .withFunctionName("MY_FUNC")
        .withCatalogName(PACKAGE_NAME);

Object  result = simpleJdbcCall.executeFunction(Object.class, sps);

结果是:

 java.sql.SQLException: ORA-17132 Invalid conversion requested

如果我从函数中删除 Char 参数并停止传递它,则存储的函数将按预期工作。

我应该如何传递一个 Char(函数签名更改是不可能的)?

标签: javaoracleoracle11gspring-jdbc

解决方案


推荐阅读