Ява не ловит MS SQL ошибка хранимой процедуры поднять
У меня есть хранимая процедура в моей базе данных SQL Server 2008, и я разрабатываю Java-приложение, которое использует соединение sqljdbc4. Все работает нормально, даже вызов процедуры, но есть одна вещь - в некоторых случаях java не отлавливает возбужденное исключение, выбрасываемое процедурами и указываемое при вызове, например, select или update (delete insert)
вот пример
AS
BEGIN
DECLARE @c INT
SELECT @c= COUNT(nomUtilisateur)
FROM Utilisateur2
PRINT @c
RAISERROR(N'error message personalise',18,1)
END
в этом случае Java исключение
try{
CallableStatement cll=con.prepareCall("EXEC f3 ");
cll.execute();
System.out.println("fin EXEC f3 ? ");}
catch (SQLException e) {
System.out.println("sqlerror state: "+e.getSQLState() +" |error code: "
+ e.getErrorCode()+" |message: "+e.getMessage());
e.printStackTrace();
}
но когда я использую выбор, как это
ALTER PROCEDURE [dbo].[f3]
AS
BEGIN
declare @c INT
SELECT @c= COUNT(nomUtilisateur)
FROM Utilisateur2
select * from Utilisateur2
PRINT @c
RAISERROR(N'error message personalise',18,1)
END
или обновление, Java продолжает excution без перехвата исключения. Как будто он не ждет окончания процедуры.
Итак, мой вопрос, я использую хранимую процедуру неправильно, или это ошибка в драйвере jdbc, или он предпочитает использовать параметр out и покинуть эту стратегию; Я погуглил эту проблему, не найдя ничего.
Лично я хочу использовать поднятую ошибку
1 ответ
Попробуйте удалить оператор PRINT и поместить "SET NOCOUNT ON" в коде proc, возможно, драйвер запутался.