Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

पीएलएसक्यूएल कर्सर के लिए उदाहरण - स्पष्ट, निहित और रेफ कर्सर

एक कर्सर तार्किक रूप से एक परिणाम सेट में एक सूचक के रूप में कार्य करता है। जब तक आप यह निर्धारित नहीं कर लेते कि आप परिणाम सेट के अंत में हैं, तब तक आप प्रत्येक पंक्ति को संसाधित करते हुए, परिणाम सेट के माध्यम से कर्सर को स्थानांतरित कर सकते हैं। कर्सर से जुड़े तीन प्रकार के सिंटैक्स होते हैं:कर्सर बनाना, कर्सर से लाना और कर्सर को बंद करना। इसके अलावा, कर्सर की कई विशेषताएँ हैं जिनका उपयोग आप अपनी तार्किक तुलनाओं में कर सकते हैं। Oracle में निम्नलिखित प्रकार के कर्सर हैं:

स्पष्ट कर्सर

स्पष्ट कर्सर वे कर्सर होते हैं जिन्हें आप घोषित करते हैं और उपयोग करते हैं।

अंतर्निहित कर्सर

पीएल/एसक्यूएल आपको एक कर्सर घोषित किए बिना आपके कोड के हिस्से के रूप में सेलेक्ट स्टेटमेंट सहित एसक्यूएल स्टेटमेंट्स को शामिल करने की अनुमति देता है, जिसे एक निहित कर्सर कहा जाता है।

रेफ कर्सर

एक कर्सर एक परिणाम सेट का संदर्भ देता है। आरईएफ कर्सर आपको एक पीएल/एसक्यूएल प्रोग्राम यूनिट से दूसरे में कर्सर संदर्भ पास करने की अनुमति देता है। दूसरे शब्दों में, यह आपको एक वेरिएबल बनाने की अनुमति देता है जो एक कर्सर प्राप्त करेगा और इसके परिणाम सेट तक पहुंच को सक्षम करेगा, लेकिन इस ब्लॉग में मैं केवल स्पष्ट और निहित कर्सर के लिए उदाहरण दे रहा हूं, मैं रेफ कर्सर के लिए उदाहरण दूंगा और दूसरे ब्लॉग में डायनामिक कर्सर .स्पष्ट कर्सर का एक उदाहरण:DECLARE nemployeeid NUMBER; प्रारंभ दिनांक दिनांक; अंतिम तिथि; sjobid VARCHAR2 (20); - कर्सर घोषित करें कर्सर करजॉब IS SELECT कर्मचारी_आईडी, start_date, end_date, job_id से hr.job_history;BEGIN OPEN curjob; लूप फ़ेच करजॉब इनटू नेप्लॉयीड, डेस्टार्टडेट, डेंडडेट, जॉबिड; जब कर्जदार% NOTFOUND से बाहर निकलें; DBMS_OUTPUT.put_line('कर्मचारी' || nemployeeid || 'नौकरी की थी' अंत लूप; CLOSE curjob;END;/स्पष्ट कर्सर के लिए एक ही उदाहरण नीचे दिया गया है, लेकिन लूप के लिए, लूप के लिए कर्सर अधिक स्मार्ट हैं क्योंकि उनमें मान प्राप्त करने के लिए चर घोषित करने की कोई आवश्यकता नहीं है और खोलने या बंद करने या यह जांचने की कोई आवश्यकता नहीं है कि क्या सूचक कर्सर के अंत में है। यहां उदाहरण दिया गया है:DECLARE CURSOR करजॉब IS SELECT Employee_id, start_date, end_date, job_id FROM hr.job_history;BEGIN for jh_rec IN curjob LOOP DBMS_OUTPUT.put_line('कर्मचारी' || jh_rec.employee_id || 'नौकरी थी' || jh_rec .job_id || 'के लिए' || ( jh_rec.end_date - jh_rec.start_date || 'दिन.')); END LOOP;END;/एक अंतर्निहित कर्सर उदाहरण:DECLARE nempno NUMBER; CURSOR curjob hr.job_history से कर्मचारी_आईडी, start_date, end_date, job_id का चयन करें; BEGIN - sql क्वेरी के नीचे hr.job_history से nempno में इम्प्लिक्ट कर्सर SELECT COUNT (*) का प्रकार है; DBMS_OUTPUT.put_line ('वहाँ हैं' || nempno || 'कर्मचारी इतिहास रिकॉर्ड।'); करजॉब लूप में jh_rec के लिए DBMS_OUTPUT.put_line('कर्मचारी' || jh_rec.employee_id || 'नौकरी थी' || jh_rec.job_id || ' for' || ( jh_rec.end_date - jh_rec.start_date || 'days.' )); अंत लूप; अंत;/

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या मुझे Oracle में प्राथमिक कुंजी कॉलम को अनुक्रमित करना चाहिए

  2. ओरेकल जबकि लूप उदाहरण

  3. मैनुअल डीबी अपग्रेड के बाद ग्रिड नियंत्रण का उन्नयन

  4. एसक्लप्लस कैसे कनेक्ट नहीं हो रहा है?

  5. Oracle sql डेवलपर का उपयोग करके एक डेटाबेस से दूसरे डेटाबेस में कॉपी करें - कनेक्शन विफल