2013-07-08 50 views
0

我得到的是試圖構建一個存儲過程,以一分鐘的時間間隔作爲Sql Server代理作業運行。它會查看Table X其中有一堆東西,特別是我對sent_time列感興趣。目前,存儲過程在15到16分鐘內找出最近的記錄,並完成所需的一切工作。我的問題當然是在那個時間段內可以存在多個記錄。所以我的想法是將所有時間範圍內的結果(不僅僅是最新的)都放到我的表變量declare @alertId table (alerts int)中。然後,我想使用任何Ids,這些Ids在存儲過程的其餘部分使用拋出該表變量的任何Ids發送基於存儲的Ids的郵件。因此,基於表變量的的想法。更重要的是,我需要訪問存儲在那裏的每個人Id,因爲它需要作爲其他處理的參數傳遞。使用表變量進行迭代?

有沒有人有這方面的經驗?我意識到這裏缺少代碼,但我沒有任何與我現在有的代碼有關的問題,更多的是我不知道如何從這裏進步,並沒有任何運氣試圖找到任何信息來幫助我開始。

回答

1

遍歷表的一種方法是使用遊標。這是另一種我更喜歡純粹審美理由的方式。性能方面不會有太大的差別。

declare @alertId table (ID int primary key clustered, alerts int); 

-- throw some Ids into @alertId here 

declare @id int = -1; -- make sure this is less than any valid alert ID 

while 1=1 
begin 
    select top(1) @id = ID 
    from @alertId 
    where ID > @id 
    order by ID asc; 

    if @id is null break; -- we're done 

    -- do whatever needs to be done with @id 
    print @id 
end 
+0

我打算今天下午去這裏看看它是如何解決我的,所以謝謝。當然,如果這是我使用的解決方案,我會選擇它 – Jfabs

+0

我確實最終做了一個'while'循環使用了一個結構,其中我設置的循環標誌等於被拉的ID的數量,它工作得很好,所以謝謝! – Jfabs