2016-05-16 45 views
0

我試圖寫一個插入幾小時前的行的程序,如果程序在下次插入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 
+1

t-sql中的所有全局變量都是預定義的。您不能聲明全局變量,但可以將值保存到表或全局臨時表中。 –

回答

0

佐哈爾是對的。 Transact SQL中沒有這樣的全局變量。甚至曾經被稱爲全局變量的東西總是真正的功能,並且從來都不是用戶可定義的。按Zohar的建議將值保存在表中。

+0

好的。謝謝 ;))) – NIC