2016-01-27 3 views
1

PerformanceReviewКак пройти через таблицу для работы sql?

  • ИУП
  • reviewDate
  • прошли
  • ноты
  • successStrategy
  • EmpId
  • nextReviewDate

выше моя таблица, с которой я работаю, моя цель - получить nextReviewDate проверить, не находится ли он в течение 7 дней с текущей даты (я сделаю это с помощью DATEDIFF()) и отправлю электронное письмо на указанный адрес электронной почты если это условие истинно.

Мой вопрос в том, как это сделать, чтобы мое задание sql выполнило эту задачу для каждой строки обзора эффективности в таблице. Я исследовал и нашел информацию о КУРСОРАХ, или используя петли WHILE, которые были медленными и неэффективными для этой задачи. Любая помощь приветствуется, как я нахожусь в завершающей стадии разработки :)

+0

Отправляя электронное письмо, вы имеете в виду, используя хранимую процедуру 'sp_send_dbmail'? –

+0

Да, но это не моя проблема. Я просто описал свой общий план действий здесь, чтобы был какой-то контекст того, что я прошу. Мне просто нужно найти наилучшие способы итерации по табличным данным по строкам. – ImDeveloping

ответ

1

Если вы находитесь в контексте SQL Server, и вы хотите отправить почту с помощью sp_send_dbmail, используя CURSOR Переберите строки и вызвать sp_send_dbmail просто хорошо. Возможно, это не самый быстрый, но в этом случае это не имеет большого значения. Вы не хотите сбривать миллисекунды для такого рода процессов.

Это будет намного больше хлопот, чтобы сформулировать комплексный подход. Это будет связано с созданием динамического оператора SQL для всех вызовов sp_send_dbmail в одной партии. Но усиление будет незначительным.