У меня есть две хранимые процедуры, похожие на шаблон ниже.
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.
Кто-нибудь сталкивался с такой же проблемой и есть ли обходной путь? Не очень понятно, является ли это ожидаемым поведением при просмотре документации.
Спасибо за ваше время и помощь.