Closed
Description
Driver version
latest
SQL Server version
mcr.microsoft.com/mssql/server:2022-latest
Client Operating System
any
JAVA/JVM version
any
Table schema
no
Problem description
Stored procedure call return wrong BigDecimal scale.
Expected behavior
Return type defined scale
Actual behavior
Return wrong scale.
Error message/stack trace
var stmt = connection.createStatement();
stmt.execute("""
create procedure test_bigdecimal
@big_decimal_type decimal(15, 3) ,
@big_decimal_type_o decimal(15, 3) output
as begin
set @big_decimal_type_o = @big_decimal_type;
end;
""");
var call = connection.prepareCall("""
{call test_bigdecimal(100.241, ?)}""");
call.registerOutParameter(1, Types.DECIMAL);
call.execute();
var actual = call.getBigDecimal(1);
var expected = new BigDecimal("100.241");
Assertions.assertEquals(expected, actual);
This example shows that driver returns 4 scale instead of 3.
So here is example driver returns 4 scale instead of 5:
var stmt = connection.createStatement();
stmt.execute("""
create procedure test_bigdecimal
@big_decimal_type decimal(15, 5) ,
@big_decimal_type_o decimal(15, 5) output
as begin
set @big_decimal_type_o = @big_decimal_type;
end;
""");
var call = connection.prepareCall("""
{call test_bigdecimal(100.24112, ?)}""");
call.registerOutParameter(1, Types.DECIMAL);
call.execute();
var actual = call.getBigDecimal(1);
var expected = new BigDecimal("100.24112");
Assertions.assertEquals(expected, actual);
I think there is some place in driver fixing scale.
Any other details that can be helpful
JDBC trace logs
(1)
Expected :100.241
Actual :100.2410
(2)
Expected :100.24112
Actual :100.2411
Metadata
Metadata
Assignees
Type
Projects
Status
Closed Issues