у вас есть эта процедура
CREATE PROCEDURE dbo.test1
AS
BEGIN
begin transaction
begin try
exec dbo.test2
commit transaction
end try
begin catch
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage
rollback transaction
end catch
END
и этот
CREATE PROCEDURE dbo.test2
AS
BEGIN
begin transaction
begin try
commit transaction
end try
begin catch
rollback transaction
if @@trancount = 0
begin
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage
end
else
--return the select above to the parent while raising an error
end catch
END
как сделать заново выбрасывать ошибку вызывающему родителю?
Я знаю, что могу сделать это;
raiserror(ERROR_MESSAGE(),ERROR_SEVERITY(),ERROR_STATE())
но как получить ERROR_LINE () , ERROR_PROCEDURE () и ERROR_NUMBER () ?
Мне нужно иметь возможность делать один и тот же выбор в каждом улове, если это возможно