0
Oracleストアドプロシージャからデータを取得しようとしています。問題は、私たちのデータベースには同じ名前と同じパラメータを持つ関数と手続きがあることです。Spring:正しい呼び出しシグネチャを判断できません - 複数のプロシージャ/関数/シグネチャ
私はそれを呼び出すようにしてみてください。
@Autowired
public void setDataSource (@Qualifier("dataSource") DataSource dataSource) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.setResultsMapCaseInsensitive(true);
this.functionGetSomeCode = new SimpleJdbcCall(jdbcTemplate)
.declareParameters(new SqlOutParameter("RETURN", OracleTypes.NUMBER))
.withFunctionName("get_some_code").withSchemaName("XXX").withCatalogName("some_pkg");
}
public Integer getSomeCode (String incoming) {
SqlParameterSource incomingParameters = new MapSqlParameterSource().addValue("incoming", incoming);
return functionGetSomeCode.executeFunction(Integer.class, incomingParameters);
}
は、私は例外を取得:
springframework.dao.InvalidDataAccessApiUsageException: Unable to determine the correct call signature - multiple procedures/functions/signatures
は何かに機能/手順の名前を変更するには、DBAを求めず、このような状況に対処する方法はあります違う?
おかげで、しかし、あなたが密接にコードを勉強している場合、私のパラメータ(inとout)が宣言されます。ここでは
は一例です。 –
"incoming"パラメータをdeclareParameters配列で宣言せずにexecuteFunction呼び出しに渡しています。 – Ryan