Как перебрать таблицу для работы SQL?
PerformanceReview
- ИУП
- reviewDate
- прошло
- заметки
- successStrategy
- EmpId
- nextReviewDate
выше моя таблица, с которой я работаю, моя цель состоит в том, чтобы получить проверку nextReviewDate, чтобы убедиться, что она в течение 7 дней с текущей даты (я сделаю это с помощью DATEDIFF()), и отправить электронное письмо на указанный адрес электронной почты, если это условие верно.
У меня вопрос, как мне сделать так, чтобы моя работа sql выполняла эту задачу для каждой строки обзора производительности в таблице. Я исследовал и нашел информацию о курсорах или использовании циклов WHILE, медленных и неэффективных для этой задачи. Любая помощь приветствуется, так как я нахожусь на последней стадии разработки:)
1 ответ
Если вы находитесь в контексте SQL Server, и вы хотите отправлять письма, используя sp_send_dbmail
, используя CURSOR
перебирать строки и вызывать sp_send_dbmail
просто отлично. Возможно, он не самый быстрый, но в этом случае он не будет иметь большого значения. Вы не хотите сбрасывать миллисекунды для такого рода процесса.
Будет намного сложнее сформулировать подход, основанный на множестве. Это будет включать создание динамического оператора SQL, чтобы иметь все sp_send_dbmail
звонки в одной партии. Но выигрыш будет незначительным.