Вызов функции H2 PL / SQL всегда завершается неудачей из-за того, что «данные недоступны [2000-197]» - PullRequest
0 голосов
/ 01 февраля 2019

Я настроил базу данных H2 для тестирования, основной базой данных является ORacle, но я не могу вызвать фиктивную функцию H2 PL / SQL.

В моей схеме src / test / resources /.Файл sql:

create schema if not exists PKG_MY_PACKAGE;

create alias if not exists PKG_MY_PACKAGE.MY_FUNCTION for "com.utils.PkgMyPackage.myFunction";

src / test / java / com / util / PkgMyPackage.class:

package com.utils;

import java.math.BigDecimal;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class PkgMyPackage {

    private static final Logger LOG = LoggerFactory.getLogger(PkgMyPackage .class);

    public static BigDecimal myFunction(Integer input) {
        LOG.debug("input: {}", input);
        BigDecimal returnValue= new BigDecimal(input).multiply(BigDecimal.TEN);
        LOG.debug("returnValue: {}", returnValue);
        return returnValue;
    }
}

мой код вызова функции:

SimpleJdbcCall call = 
                new SimpleJdbcCall(jdbcTemplate.getJdbcTemplate())
                .withCatalogName("pkg_my_package")
                .withFunctionName("my_function")
                .withoutProcedureColumnMetaDataAccess()
                .withReturnValue()
                .declareParameters(new SqlOutParameter("return",Types.DECIMAL),
                        new SqlParameter("input", Types.NUMERIC));
        SqlParameterSource paramMap = 
                new MapSqlParameterSource()
                .addValue("input",1, Types.NUMERIC);
        return call.executeFunction(BigDecimal.class, paramMap);

Регистратор внутри функций показывает правильные значения:

вход: 1 returnValue: 10

Но выдается исключение:

org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{? = call PKG_OFFER_QUOTE_BREAKDOWN.FUNC_GET_TOTAL_BREAKDOWN_OFFER(?)}]; No hay datos disponibles.
No data is available [2000-197]; nested exception is org.h2.jdbc.JdbcSQLException: No hay datos disponibles.
No data is available [2000-197]
    at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:104)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
    at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1444)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1107)
    at org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:1146)
    at org.springframework.jdbc.core.simple.AbstractJdbcCall.executeCallInternal(AbstractJdbcCall.java:413)
    at org.springframework.jdbc.core.simple.AbstractJdbcCall.doExecute(AbstractJdbcCall.java:373)
    at org.springframework.jdbc.core.simple.SimpleJdbcCall.executeFunction(SimpleJdbcCall.java:164)

Так чтокажется, это проблема при управлении результатами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...