У меня есть хранимая процедура со следующей подписью:SQLServerException: Ошибка арифметического переполнения преобразования числового с типом данными числового
CREATE PROCEDURE my_proc
@param1 varchar(4),
@param2 varchar(4),
@param3 bit,
@param4 decimal(14,4),
@param5 varchar(10)
AS
...
В стороне Java У меня есть следующий код:
StoredProcedureQuery proc= entityManager.createStoredProcedureQuery("my_proc");
proc.registerStoredProcedureParameter(1, String.class, ParameterMode.IN);
proc.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
proc.registerStoredProcedureParameter(3, Boolean.class, ParameterMode.IN);
proc.registerStoredProcedureParameter(4, BigDecimal.class, ParameterMode.IN);
proc.registerStoredProcedureParameter(5, String.class, ParameterMode.IN);
...
proc.setParameter(4, new BigDecimal("10000"));
....
proc.execute()
Когда код я вижу следующее следование в следе:
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: Error calling CallableStatement.getMoreResults
....
Caused by: org.hibernate.exception.SQLGrammarException: Error calling CallableStatement.getMoreResults
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123)
....
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Arithmetic overflow error converting numeric to data type numeric.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
Но это исключение когда-то бросает, а иногда - нет. Похоже, это зависит от чего-то другого. Но я понятия не имею, что это может быть.
Пожалуйста, помогите понять причину возникновения проблемы и предоставить возможные решения.
Только идея: 'proc.setParameter (4, new BigDecimal (" 10000.0000 "));' – agad
@agad 7 это изменение ничего не влияет – gstackoverflow
Возможно, проблема в SP. Показать остальную часть кода. – lad2025