आप शायद ही कभी पोस्टग्रेएसक्यूएल में कर्सर का स्पष्ट रूप से उपयोग करना चाहते हैं, यहां तक कि plpgsql में क्वेरी परिणामों को संसाधित करते समय भी। यह कई अन्य एसक्यूएल डेटाबेस से एक महत्वपूर्ण विपरीत है जहां उनका लगभग हर समय उपयोग किया जाता है।
plpgsql में आप बस की तरह कुछ लिख सकते हैं:
DECLARE
emp employee%rowtype;
BEGIN
FOR emp IN SELECT * FROM employee LOOP
IF emp.active THEN
RAISE INFO 'Active: %', emp.employee_id
END IF;
END LOOP;
END
ऊपर में, उद्घाटन के साथ plpgsql भाषा हैंडलर सौदों, बाध्यकारी लाए जाने और खुद को बंद करने (declarations के बारे में अधिक है, और control structures)।
9.0 से पोस्टग्रेएसक्यूएल के साथ, आप बस "डीओ" ब्लॉक का उपयोग करके plpgsql निष्पादित करने में आसानी से ड्रॉप कर सकते हैं। पूर्व संस्करणों के लिए, आपको एक फ़ंक्शन बनाने और इसे चुनने की आवश्यकता है। यदि आप PostgreSQL समकक्ष की तलाश में हैं, उदाहरण के लिए, SQL सर्वर पर एक कर्सर के साथ परिणामस्वरूप पुनरावृत्ति, यह वही है। ध्यान दें कि पुनरावृत्ति इत्यादि एसक्यूएल बोली का हिस्सा है, केवल plpgsql (या अन्य किसी भी एम्बेडेड भाषाओं) का हिस्सा है।
एसक्यूएल स्तर पर "कर्सर xxx घोषणा" वाक्य रचना इस तरह इस्तेमाल किया जा सकता:
DECLARE cur_employees CURSOR FOR SELECT * FROM employee;
FETCH NEXT FROM cur_employees;
// etc..
CLOSE cur_employees;
यह ध्यान से क्वेरी परिणाम सेट का कोई हिस्सा प्राप्त करने के लिए इस्तेमाल किया जा सकता। हालांकि, इनका उपयोग करना असामान्य है, क्योंकि आम तौर पर आपका क्लाइंट ड्राइवर ऐसा करने के लिए कुछ प्रकार की कार्यक्षमता प्रदान करेगा (उदाहरण के लिए जेडीबीसी में स्क्रोल करने योग्य परिणाम सेट)। आप कर्सर को ओरेकल के समान कार्यों से भी वापस कर सकते हैं, हालांकि फिर से तुलनात्मक रूप से दुर्लभ उपयोग केस है।
सक्रिय लोगों का चयन करते हुए WHERE क्लॉज जोड़कर प्रारंभ करें। – aib
[मैनुअल में कर्सर के बारे में अध्याय] पढ़ें (http://www.postgresql.org/docs/9.1/interactive/plpgsql-cursors.html)। –
मैंने किया, जैसा कि आप मुझसे कहा: चुनें * के लिए घोषणा cur_employees कर्सर कर्मचारी से जहां सक्रिय = 'सक्रिय' बंद cur_employees लेकिन मैं निम्नलिखित त्रुटि हो रही है: पर या निकट "बंद सिंटेक्स त्रुटि: – Karl