Поднимите Java SQLException из хранимой процедуры SQL Server?

Габор Кафедра:

У меня есть хранимая процедура SQL Server, похожее на это:

CREATE PROCEDURE proc1
(
    @param DECIMAL
)
AS
    BEGIN
        INSERT INTO table1 (@param);
        -- further commands
    END;
GO

Эта процедура вызывается из Java. Я представил уникальное ограничение на table1, на той же самой колонке , которая вставляется выше. Ожидается , чтобы получить SQLException в Java в случае нарушения ограничений, но это не происходит. Когда процедура выполняется вручную с SSMS, я могу видеть , что он печатает ограничение ошибку нарушения, а затем продолжается вдоль остальной части процесса, который я думаю , что это странно, я ожидал , что он не в состоянии . Так что я изменил его так:

CREATE PROCEDURE proc1
(
    @param DECIMAL
)
AS
    BEGIN
        BEGIN TRY
            INSERT INTO table1 (@param);
        END TRY
        BEGIN CATCH
            THROW 51000, 'Unable to insert', 1;
        END CATCH
        -- further commands
    END;
GO

Теперь, когда я исполняю его вручную в SSMS, процедура прекращается в случае выхода из строя, и печатает мое сообщение об ошибке. Однако процесс вызова Java не получает каких-либо признаков ошибки. Как я могу распространять эту ошибку вызывающего слоя Java?

UPDATE: Java вызова слой:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://x.x.x.x;database=x";

try (Connection conn = DriverManager.getConnection(connectionUrl, "x", "x")) {
    try (CallableStatement stmt = conn.prepareCall("{call proc1(?)}")) {
        stmt.setInt(1, 1);

        stmt.execute();

        System.out.println("Done");
    }
}

В конце концов, я могу увидеть «Done» сообщение, выводимое на консоль.

И Гусман:

Добавить в SET NOCOUNT ONкачестве первого оператора в прок для подавления DONE_IN_PROC(сверку) TDS сообщений. В противном случае код нужно будет потреблять все результаты , возвращаемые с помощью ResultSetи getMoreResultsдо того , как возникает ошибка на клиенте.

рекомендация

отhttp://10.200.1.11:23101/article/api/json?id=389806&siteId=1
рекомендация