Поведение raiserror драйвера sybase jdbc - PullRequest
0 голосов
/ 07 марта 2019

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

create proc proc3
as 
begin
    select 'entering proc 3'

    raiserror 20000 'Not implemented'    
    return 1
end

create proc proc2
as 
begin
    select 'entering proc 2'    

    declare @ret int

    exec @ret = proc3

    select 'completred proc3'

    if @ret <> 0
    begin
        select 'error'
    end    
end

proc3 - использует raiserror для сообщения об ошибке и возвращает со статусом 1.

proc2 - использует статус возврата из proc3 и выполняет некоторую обработку ошибок, если его ненулевое значение

Когда я выполняю proc2 в клиенте sql, я получаю статус возврата 1, как и ожидалось, а также выдается ошибка-

выход: * +1010 *

entering proc 2
entering proc 3
completred proc3
<along with the error> - Not implemented Msg: 20000, Level: 16, State: 1

Когда я запускаю то же самое из Java (через задачу ant), не выполняется ни один из кодов обработки ошибок. Похоже, что он останавливает выполнение, как только обнаруживает raiserror в proc с SQLException.

Кто-нибудь сталкивался с такой же проблемой и есть ли обходной путь? Не очень понятно, является ли это ожидаемым поведением при просмотре документации.

Спасибо за ваше время и помощь.

...