带有全局参数的SQL Server过程/事务?

时间:2016-05-16 12:25:31

标签: sql-server transactions procedure

如果过程在下次插入2小时后出现错误等,我尝试编写一个先插入几小时行的过程:

此代码会覆盖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

1 个答案:

答案 0 :(得分:0)

Zohar是对的。在Transact SQL中没有全局变量这样的东西。即使是曾经被称为全局变量的东西也总是真正的功能,而且从来没有用户可定义。如Zohar建议的那样将值保存在表格中。