Trường hợp này chính xác là những gì các vòng lặp phù hợp với (và được thiết kế cho).
Vì bạn thực hiện những việc nằm ngoài phạm vi cơ sở dữ liệu, nên việc sử dụng các vòng lặp cho chúng là hoàn toàn hợp pháp.
Cơ sở dữ liệu được thiết kế để lưu trữ dữ liệu và thực hiện các truy vấn dựa trên những dữ liệu này, những dữ liệu này sẽ trả về chúng theo cách tiện dụng nhất.
Cơ sở dữ liệu quan hệ có thể trả về dữ liệu ở dạng tập hợp hàng.
Con trỏ (và các vòng lặp sử dụng chúng) được thiết kế để giữ một bộ hàng ổn định để có thể thực hiện một số việc với mỗi hàng của nó.
"Những thứ" ở đây ý tôi không phải là các thủ thuật cơ sở dữ liệu thuần túy mà là những thứ thực sự ảnh hưởng đến thế giới bên ngoài, những thứ mà cơ sở dữ liệu được thiết kế cho, có thể là hiển thị một bảng trên trang web, tạo báo cáo tài chính hoặc gửi email.
Thật tệ khi sử dụng con trỏ cho các tác vụ cơ sở dữ liệu thuần túy (như chuyển đổi bộ hàng này sang bộ hàng khác), nhưng thật tuyệt khi sử dụng chúng cho những thứ như bạn đã mô tả.
Các phương pháp dựa trên tập hợp được thiết kế để hoạt động trong một giao dịch duy nhất.
Nếu truy vấn set-base của bạn không thành công vì lý do nào đó, thì cơ sở dữ liệu của bạn sẽ trở lại trạng thái trước đó, nhưng bạn không thể "khôi phục" email đã gửi. Bạn sẽ không thể theo dõi tin nhắn của mình trong trường hợp có lỗi.