यह मामला ठीक वही है जिसके लिए लूप अच्छे हैं (और इसके लिए डिज़ाइन किए गए हैं)।
चूंकि आप ऐसी चीजें करते हैं जो डेटाबेस के दायरे से बाहर हो जाती हैं, इसलिए उनके लिए लूप का उपयोग करना पूरी तरह से वैध है।
डेटाबेस को डेटा स्टोर करने और इन डेटा के विरुद्ध क्वेरी करने के लिए डिज़ाइन किया गया है जो उन्हें सबसे आसान तरीके से लौटाता है।
संबंधपरक डेटाबेस पंक्तियों के रूप में डेटा लौटा सकते हैं।
कर्सर (और लूप जो उनका उपयोग करते हैं) को एक स्थिर रोसेट रखने के लिए डिज़ाइन किया गया है ताकि इसकी प्रत्येक पंक्ति के साथ कुछ चीजें की जा सकें।
यहां "चीजें" से मेरा मतलब शुद्ध डेटाबेस ट्रिक्स नहीं है, बल्कि वास्तविक चीजें हैं जो बाहरी दुनिया को प्रभावित करती हैं, डेटाबेस को जिन चीजों के लिए डिज़ाइन किया गया है, चाहे वह वेबपेज पर एक टेबल प्रदर्शित करना हो, एक वित्तीय रिपोर्ट तैयार करना हो या एक ईमेल भेजना हो।
शुद्ध डेटाबेस कार्यों (जैसे एक पंक्ति को दूसरे में बदलना) के लिए कर्सर का उपयोग करना बुरा है, लेकिन आपके द्वारा वर्णित चीजों के लिए उनका उपयोग करना बिल्कुल अच्छा है।
सेट आधारित विधियों को एक ही लेन-देन के भीतर काम करने के लिए डिज़ाइन किया गया है।
यदि आपकी सेट-बेस क्वेरी किसी कारण से विफल हो जाती है, तो आप डेटाबेस पहले की स्थिति में वापस आ जाएंगे, लेकिन आप भेजे गए ईमेल को "रोलबैक" नहीं कर सकते। किसी त्रुटि की स्थिति में आप अपने संदेशों पर नज़र नहीं रख पाएंगे।