我正在嘗試編寫一個存儲過程來檢查某個值並返回錯誤或繼續更新語句。我已經嘗試編寫過程,並且一切看起來都是語法上的,但它似乎只是檢查某個值,並且在沒有找到它時似乎忽略了需要發生的更新。我當前的代碼如下:需要幫助編寫使用事務的存儲過程
declare @newID varchar = 099393
declare @oldID varchar = 260260
Declare @pMsg varchar(255)
if exists (select * from req where [email protected])
begin
SET @pMsg = 'The department ID ' + @oldID + ' cannot be changed at this time.'
return
end
Begin Try
Begin TRAN
update dbo.dept
set dept_id = @newID
where dept_id = @oldID
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
update dbo.dept
set dept_id = @oldID
where dept_id = @oldID
END CATCH
select [email protected]
return
所有的存儲過程本質上是在交易中。就我所知,沒有必要在代碼中實現回滾。 – Matthew
嗯真正的..我試着運行它沒有事務位,只是與條件後的更新語句,它似乎仍然跳過更新和輸出(0行受到影響) – RobGries
你可以請更多的描述是什麼意向行爲是? – Matthew