Не проще ли написать следующее?
create proc [dbo].[UPDATE_SAMPLE_DETAILS_STATUS] (
@ORDER_ID int,
@TESTID int,
@SAMPLE_STATUS int
) AS
BEGIN
UPDATE [Lab_Hematology_Samples_Details]
SET SAMPLE_STATUS = @SAMPLE_STATUS + 1
WHERE ORDER_ID = @ORDER_ID AND
testid = @testid AND
@SAMPLE_STATUS IN (1, 2, 3, 4, 5);
END;
В некоторых случаях это может не совпадать с логикой c (особенно если несколько строк соответствуют WHERE
условия). Но, похоже, это то, что вы намереваетесь.
Ошибка в вашем коде не совсем очевидна. Я рекомендую заключить тело хранимой процедуры в блок BEGIN
/ END
; это может предотвратить некоторые неожиданные синтаксические ошибки.