Информационные / предупреждающие сообщения от процедур SQL к Java через драйвер JDBC - PullRequest
1 голос
/ 19 ноября 2009

При просмотре метода ResultSet.getWarnings () должен быть какой-то способ передачи предупреждений / информационных сообщений из хранимых процедур на уровень Java, но обнаружилось, что большинство драйверов не реализуют этот метод. Есть ли способ отправить информацию / предупреждение из хранимой процедуры в слой Java?

Ответы [ 3 ]

1 голос
/ 19 ноября 2009

Это будет зависеть от конкретного сервера. В MSSQL вы бы использовали RAISERROR. Я думаю, что поведение простого сокрытия в предупреждениях get или генерации SQLException (которое вы всегда можете перехватить и проанализировать) будет зависеть от уровня.

Но если и как это поддерживается, зависит от поставщика базы данных, поэтому вы должны направить свой вопрос на конкретную базу данных, которая вас интересует.

0 голосов
/ 19 ноября 2009

Я предполагаю, что под предупреждением / информационными сообщениями вы подразумеваете текстовые строки, сгенерированные самой хранимой процедурой. Я бы порекомендовал добавить параметр out в хранимую процедуру и использовать его для возврата сообщений / предупреждений. Если ваши хранимые процедуры написаны на Java на Oracle, вы даже можете сериализовать список сообщений, вернуть его через интерфейс JDBC в виде большого двоичного объекта и восстановить его в клиентском коде Java. Я сделал это в большой системе несколько лет назад, и она работала довольно хорошо.

0 голосов
/ 19 ноября 2009

Вы уже пытались использовать CallableStatement при вызове хранимых процедур. Я думаю, что так и должно быть. Возможно, там поддерживается getWarnings().

CallableStatement cs = Connection.prepareCall(..)
cs.registerOutParameter(..)
cs.setXXX
....
cs.executeUpdate()
cs.getXXX()
cs.getWarnings()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...