У меня есть хранимая процедура, которая вызывается другой хранимой процедурой
ALTER PROCEDURE [dbo].[usp_Test]
AS
begin
declare @errorCode int
declare @lastIdentity int
select @errorCode = @@ERROR
if @errorCode=0
begin
update Vehicle set model='1996----------'
where Make='MERC'
select @errorCode = @@ERROR
select @lastIdentity = @@IDENTITY
end
print 'usp_test lastIdentity=' + convert(varchar(10), isnull(@lastIdentity,0))
print 'usp_test errorCode=' + convert(varchar(10), @errorCode)
end
Если я вызываю хранимую процедуру следующим образом
declare @RetVal int
exec @RetVal=usp_Test
print 'return value is ' + convert(varchar(10), @RetVal)
Я получаю следующие сообщения
Сообщение 8152, уровень 16, состояние 14, процедура usp_Test, строка 14 Строка или двоичные данные будут обрезаны.Заявление было прекращено.usp_test lastIdentity = 0 usp_test errorCode = 8152 возвращаемое значение равно -6
Путем добавления RETURN 0 в конце и RETURN @errorCode после select @errorCode ... У меня будет хороший чистый способ возврата ошибки ивпоследствии справиться с этим.Я удивлен, что без каких-либо ВОЗВРАТОВ я получаю возвращаемое значение -6.Кто-нибудь может объяснить, почему это так?