Я пытаюсь написать процедуру, которая вставляет строки часов раньше, если процедура получает ошибку в следующий раз вставляет за 2 часа до и т.д.:Процедура/транзакция SQL Server с глобальным параметром?
Этот код перезаписывает ERROR_COUNT
. как я должен объявить переменную @error_count
, что значение было сохранено для каждого вызова?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[errorcount]
AS
BEGIN
DECLARE @Data DateTime
DECLARE @error_count int
SET @error_count = 0
-- if first run error_count = 0 --
SET @Data = DATEADD(HOUR, -1 * @error_count - 1, GETDATE())
BEGIN TRANSACTION
Select ... where Date > @Date
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
set @error_count= @error_count + 1;
END
ELSE begin
COMMIT TRANSACTION
set @error_count = 0
end
END
Все глобальные переменные в t-sql предопределены. вы не можете объявить глобальную переменную, но вы можете сохранить значение в таблице или глобальную временную таблицу. –