Ява не ловит 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, возможно, драйвер запутался.

Другие вопросы по тегам