Этот случай точно подходит для петель (и предназначен для).
Поскольку вы делаете то, что выпадает из области базы данных, вполне законно использовать для них циклы.
Базы данных предназначены для хранения данных и выполнения запросов к этим данным, которые возвращают их наиболее удобным образом.
Реляционные базы данных могут возвращать данные в виде наборов строк.
Курсоры (и их циклы) предназначены для сохранения стабильного набора строк, чтобы можно было выполнить некоторые вещи с каждой из его строк.
Под «вещами» здесь я имею в виду не чистые трюки базы данных, а реальные вещи, которые влияют на внешний мир, на которые предназначена база данных, будь то отображение таблицы на веб-странице, создание финансового отчета или отправка по электронной почте ,
Плохо использовать курсоры для чистых задач базы данных (например, преобразование одного набора строк в другое), но совершенно приятно использовать их для таких вещей, которые вы описали.
Наборы основанных методов предназначены для работы в рамках одной транзакции.
Если ваш запрос на базовую базу по какой-то причине не удастся, ваша база данных вернется к состоянию, указанному ранее, но вы не сможете «откат» отправленного сообщения. Вы не сможете отслеживать свои сообщения в случае ошибки.
Петли, кажется, идеально подходит для этого. Не могли бы вы объяснить, почему вы хотели бы избежать их? –
Петли - плохая идея для этого типа вещей. См. Ниже – NotMe
Мне не нравятся пишущие петли и предпочитаю использовать метод, основанный на наборе. – Sam