2013-07-08 2 views
0

У меня есть попытка построить хранимую процедуру, которая будет выполняться как задание агента сервера Sql с регулярным интервалом в минуту. Он рассмотрит Table X, в котором есть куча вещей, и в частности меня интересует колонка sent_time. В настоящее время хранимая процедура ищет самую последнюю запись с интервалом между 15 и 16 минутами и делает все, что нужно для этого. Моя проблема, конечно, в том, что в течение этого времени может существовать более одной записи. Таким образом, идея, которую я имею, - это выбросить все результаты (не только самые последние) из этого времени в мою переменную таблицы declare @alertId table (alerts int). Затем я хочу использовать все, что 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, используя структуру, в которой я установил флаг цикла, равный количеству отобранных идентификаторов, и он работает просто отлично, поэтому спасибо! – Jfabs

Смежные вопросы