0

我所要做的是尝试构建一个存储过程,以每隔一分钟作为 Sql Server 代理作业运行。它会看看Table X里面有一堆东西,特别是我感兴趣的sent_time专栏。目前,存储过程会在 15 到 16 分钟内查找最近的记录,并完成所需的一切。我的问题当然是在那个时间跨度内可以存在多个记录。所以我的想法是将那个时间跨度的所有结果(不仅仅是最近的)放入我的表变量declare @alertId table (alerts int)中。然后,我想使用Ids在其余存储过程中扔进该表变量的任何内容来发送基于Ids存储的消息。因此有这样的想法基于表变量迭代。然而,更重要的是,我需要访问存储在那里的每个人Id,因为它需要作为参数传递给其他处理。

有人对这个有经验么?我意识到这里缺少代码,但我没有与我目前拥有的代码有关的任何问题,更多的是我不知道如何从这里取得进展,也没有任何运气试图找到任何帮助我开始的信息。

4

1 回答 1

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
于 2013-07-09T00:33:52.357 回答