यदि आपको लूप की आवश्यकता है तो अपनी विधि बदलने की कोशिश करें!
अभिभावक संग्रहीत प्रक्रिया के भीतर, एक #temp तालिका बनाएं जिसमें उस प्रक्रिया को शामिल किया गया है जिसे आपको संसाधित करने की आवश्यकता है। बच्चे संग्रहीत प्रक्रिया को कॉल करें, #temp तालिका दिखाई देगी और आप इसे संसाधित कर सकते हैं, आशा है कि डेटा के पूरे सेट और कर्सर या लूप के बिना काम कर रहे हों।
यह वास्तव में इस बच्चे की संग्रहीत प्रक्रिया क्या कर रहा है इस पर निर्भर करता है। यदि आप अद्यतन कर रहे हैं, तो आप #temp तालिका में शामिल होने से "अपडेट" कर सकते हैं और लूप के बिना एक ही कथन में सभी काम कर सकते हैं। INSERT और DELETEs के लिए भी किया जा सकता है। यदि आपको आईएफ के साथ कई अपडेट करने की आवश्यकता है तो आप उन्हें #temp तालिका के साथ एकाधिक UPDATE FROM
में परिवर्तित कर सकते हैं और केस स्टेटमेंट या कहां स्थितियों का उपयोग कर सकते हैं।
डेटाबेस में काम करते समय लूपिंग की मानसिकता खोने का प्रयास करें, यह वास्तविक प्रदर्शन नाली है, जिससे लॉकिंग/अवरुद्ध हो जाएगा और प्रसंस्करण धीमा हो जाएगा। यदि आप हर जगह लूप करते हैं, तो आपका सिस्टम बहुत अच्छी तरह से स्केल नहीं करेगा, और धीमे रीफ्रेश के बारे में शिकायत करने पर उपयोगकर्ताओं को तेज़ करना बहुत कठिन होगा।
इस प्रक्रिया की सामग्री पोस्ट करें जिसे आप लूप में कॉल करना चाहते हैं, और मैं 10 बार में से 9 शर्त लगाऊंगा, आप इसे पंक्तियों के सेट पर काम करने के लिए लिख सकते हैं।
स्रोत
2009-05-20 18:48:42
आप की जरूरत है यह निर्दिष्ट करने के लिए कि आरडीबीएमएस क्या है - एसक्यूएल सर्वर, ओरेकल, माईएसक्ल, आदि के लिए उत्तर अलग होगा –
संभावना है कि आपको किसी संग्रहीत प्रक्रिया की आवश्यकता नहीं है। क्या आप संग्रहीत प्रक्रिया को "क्या" रूपरेखा कर सकते हैं, बिल्कुल? शायद पूरी प्रक्रिया को एक अद्यतन कथन के रूप में व्यक्त किया जा सकता है। यदि संभव हो तो "प्रत्येक रिकॉर्ड के लिए एक बार करें" पैटर्न को आम तौर पर टालना चाहिए। – Tomalak
आप किस डेटाबेस का उपयोग कर रहे हैं? –