Я пытаюсь написать sproc с транзакцией.Кто-нибудь может сказать мне, будут ли какие-либо проблемы с кодом ниже или он будет работать как задумано?
ALTER procedure [dbo].[DeleteMetricMeter]
(
@SectionID int,
@MetricMeterID int,
@Result bit output
)
as
declare @MetricMeterCount int
declare @err int
declare @rowcount int
set xact_abort on
begin tran
select @MetricMeterCount = count(*) from luMetricMeters
where fkSectionID = @SectionID
select @err = @@error, @rowcount = @@rowcount
if (@err <> 0) or (@rowcount = 0)
begin
goto on_error
end
delete from luMetricMeterList
where pkMetricMeterID = @MetricMeterID
select @err = @@error, @rowcount = @@rowcount
if (@err <> 0) or (@rowcount = 0)
begin
goto on_error
end
delete from luMetricMeters
where pkMetricMeterID = @MetricMeterID
select @err = @@error, @rowcount = @@rowcount
if (@err <> 0) or (@rowcount = 0)
begin
goto on_error
end
if (@MetricMeterCount = 1)
begin
delete from luMetricSections
where pkSectionID = @SectionID
select @err = @@error, @rowcount = @@rowcount
if (@err <> 0) or (@rowcount = 0)
begin
goto on_error
end
end
commit tran
set @result = 1
return @result
on_error:
rollback tran
set @result = 0
return @result