Различное поведение с Oracle Connection и Connection при изменении переменной пакета.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Различное поведение с Oracle Connection и Connection при изменении переменной пакета.

Сообщение Anonymous »

Мне нужно изменить переменную пакета с помощью JDBC и получить обратно новое значение.
Когда я делаю это через java.sql.Connection, он возвращает новое значение переменной - 345:

Код: Выделить всё

    BigDecimal newValue = BigDecimal.valueOf(345);

try (Connection conn = JDBCDataSource.getConnection()) {
try (CallableStatement stmt = conn.prepareCall("{ call test_pkg.test_num := ? }")) {
stmt.setBigDecimal(1, newValue);
stmt.executeUpdate();
conn.commit();
}
}

BigDecimal retVal;

try (Connection conn = JDBCDataSource.getConnection()) {
try (CallableStatement stmt = conn.prepareCall("{? = call test_pkg.test_num}")) {
stmt.registerOutParameter(1, Types.DECIMAL);
stmt.executeUpdate();
retVal = stmt.getBigDecimal(1);

}
}

System.out.println(retVal);
Но если развернуть java.sql.Connection в oracle.jdbc.OracleConnection< /em> используя conn.unwrap(OracleConnection.class)
тогда он возвращает исходное значение, а не новое.
Мне нужно понять, почему это работает в такой способ с OracleConnection и способы его решения.

Подробнее здесь: https://stackoverflow.com/questions/787 ... package-va
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»