2011/01/14

如何撰寫跳號一覽表的Stored Procedure

要解決這樣的問題,可以使用SQL Server中的EXCEPT指令。

我們可以先建立一組連續號碼的資料,再用這個資料,利用EXCEPT指令與真實的資料表進行比對後取得不存在於真實資料表的資料,即為「跳號資料」。看一下以下的範例:

  • 建立一個資料表,模擬真實環境的取號資料表
    image
  • 填入DEMO 用資料
    image
  • 先來檢視一下產生的資料
    --檢視資料產生結果
    SELECT * FROM dbo.TxSN
    結果是:
    image

  • 撰寫下列程式碼,取得跳號資料


    DECLARE @t TABLE(txid INT)
    DECLARE @max INT, @min INT
     
    --找出最小與最大編號
    SET @min = (SELECT MIN(TxId) FROM dbo.TxSN)
    SET @max = (SELECT MAX(TxId) FROM dbo.TxSN)
     
    WHILE @min <= @max
    BEGIN
        INSERT INTO @t
                ( txid )
        VALUES  ( @min  -- txid - int
                  )
        SET @min = @min + 1
    END
     
    --使用 EXCEPT 找出不連續編號
    SELECT txid    FROM @t EXCEPT
    SELECT TxId FROM dbo.TxSN
     
    SET NOCOUNT OFF

  • 執行後結果如下:
    image

這樣就可以快速的取得跳號資料囉

0 意見: