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

oracle में कर्सर क्या है?

ओरेकल में कर्सर क्या है

Oracle SQL कथनों को निष्पादित करने और जानकारी संग्रहीत करने के लिए निजी SQL क्षेत्रों नामक एक कार्य क्षेत्र का उपयोग करता है। Oracle कर्सर एक PL/SQL निर्माण है जो आपको इन कार्य क्षेत्रों को नाम देने और उनकी संग्रहीत जानकारी तक पहुँचने की अनुमति देता है

Oracle में कर्सर के प्रकार

  • Oracle में लागू कर्सर
  • Oracle में स्पष्ट कर्सर

स्पष्ट कर्सर

स्पष्ट कर्सर के निम्न चरण होते हैं

1) घोषित करें:हम कर्सर के नाम की घोषणा करते हैं और क्वेरी की संरचना को परिभाषित करते हैं

2) ओपन:  ओपन स्टेटमेंट क्वेरी को निष्पादित करता है और संदर्भित किसी भी वेरिएबल को बांधता है। क्वेरी द्वारा पहचानी गई पंक्तियों को सक्रिय सेट कहा जाता है। और अब वह लाने के लिए उपलब्ध है

सक्रिय सेट क्या है: एक बहु-पंक्ति क्वेरी द्वारा लौटाई गई पंक्तियों का सेट

इसका आकार पंक्तियों की संख्या है जो आपके खोज मापदंड को पूरा करती है

3) फ़ेच:इस चरण में, कर्सर से पंक्तियाँ प्राप्त की जाती हैं, और प्रत्येक फ़ेच के बाद, आप किसी भी शेष पंक्तियों के लिए कर्सर का परीक्षण करते हैं, यदि कोई पंक्तियाँ नहीं हैं, तो आप कर्सर को बंद करने के लिए आगे बढ़ते हैं

4) बंद करें:क्लोज स्टेटमेंट पंक्तियों के सक्रिय सेट को जारी करता है और हम फिर से सक्रिय सेट को ताज़ा करने के लिए कर्सर खोल सकते हैं

विवरण में चरण

कर्सर घोषित करना

  • कर्सर का नाम
  • प्रश्न की संरचना
सिंटैक्स: CURSOR IS :इसमें अधिकांश सामान्य खंड शामिल हैं, लेकिन INTO खंड की अनुमति नहीं हैउदाहरण: DECLARE CURSOR cur1 चयन पता, वेतन, emp_no, emp_name से emp जहां क्षेत्र ='यूएस' है; ……………………………… शुरू ………………………… अंत;

कर्सर खोलना

यहां पार्सिंग और क्वेरी निष्पादन किया जाता है। कर्सर खोलने के बाद क्वेरी द्वारा लौटाई गई पंक्तियाँ लाने के लिए उपलब्ध हैं।

सिंटैक्स: ओपन <कर्सर नेम> इस स्टेटमेंट का इस्तेमाल ब्लॉक के एक्जीक्यूटेबल सेक्शन में किया जाता है। यह पंक्तियों का एक सक्रिय सेट भी स्थापित करता हैउदाहरण: खुला वक्र1; DECLARE v_salary नंबर; CURSOR cur1 एम्पी से चयन वेतन है जहां क्षेत्र ='यूएस'; BEGIN OPEN cur1; लूप FETCH cur1 v_salary में; बाहर निकलें जब cur1% NOTFOUND; DBMS_OUTPUT.PUT_LINE (v_salary); अंत लूप; बंद वक्र1; अंत; // पूर्व> 

कर्सर अब सक्रिय सेट में पहली पंक्ति को इंगित करेगा।

पंक्तियों को लाया जा रहा है

कर्सर खोले जाने के बाद वर्तमान पंक्ति को चरों में लोड किया जाता है। वर्तमान पंक्ति वह पंक्ति है जिस पर कर्सर वर्तमान में इंगित कर रहा है पीएल/एसक्यूएल चर या होस्ट में डेटा की पुनर्प्राप्ति

चर FETCH कथन के माध्यम से किया जाता है

सिंटैक्स:FETCH INTO;
  • कर्सर से संबद्ध क्वेरी द्वारा लौटाए गए प्रत्येक स्तंभ मान के लिए, एक होना चाहिए

INTO सूची में संगत चर।

  • साथ ही उनके डेटाटाइप संगत होने चाहिए

कर्सर बंद करना

यह स्पष्ट रूप से कर्सर को बंद कर देता है, यदि आवश्यक हो तो इसे फिर से खोलने की अनुमति देता है।

सिंटैक्स: बंद करें <कर्सर-नाम>;उदाहरण: CLOSE cur1CLOSE  . का उपयोग करने का उदाहरण DECLARE v_address emp.address%TYPE; CURSOR cur1 emp से चुनिंदा पता है; BEGIN OPEN cur1; लूप FETCH cur1 v_address में; बाहर निकलें जब cur1% NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_address); अंत लूप; बंद वक्र1; अंत; // पूर्व> 

स्पष्ट कर्सर गुण

विशेषता प्रकार विवरण
%ISOPEN बूलियन यदि कर्सर खुला है तो TRUE का मूल्यांकन करता है
% NOTFOUND बूलियन यदि नवीनतम फ़ेच एक पंक्ति नहीं लौटाता है, तो TRUE का मूल्यांकन करता है
% मिला बूलियन यदि नवीनतम फ़ेच एक पंक्ति लौटाता है, तो इसका मूल्यांकन TRUE पर करता है
%ROWCOUNT NUMBER अब तक लौटाई गई पंक्तियों की कुल संख्या का मूल्यांकन करता है

Oracle कर्सर के साथ उन्नत अवधारणा

Oracle Cursor and Records

1) हम पहले ही PLSQL रिकॉर्ड के बारे में पढ़ चुके हैं।

2) हम PL/SQL रिकॉर्ड में भी मान लाकर सक्रिय सेट की पंक्तियों को संसाधित कर सकते हैं

3) हम स्पष्ट कर्सर में कॉलम की चयनित सूची के आधार पर एक plsql रिकॉर्ड भी परिभाषित कर सकते हैं

उदाहरण

DECLARE CURSOR dept_cursor is Select deptno, dept_name FROM Dept; dept_record dept_cursor% पंक्ति प्रकार; Dept_cursor खोलें; लूप FETCH dept_cursor into dept_record; Dept_temp (deptno, deptname) मान (dept_record.deptno, dept_record.dept_name) में डालें; बाहर निकलें जब dept_cursor%नहीं मिला; अंत लूप; वादा करना; विभाग_कर्सर बंद करें; अंत; // पूर्व> 

पैरामीटर के साथ कर्सर/ऑरैकल में पैरामीटरयुक्त कर्सर

सिंटैक्स:CURSOR कर्सर_नाम (पैरामीटर_नाम डेटाटाइप, ) IS Select_statement;

1) जब कर्सर खोला जाता है और क्वेरी निष्पादित की जाती है, तो कर्सर को पैरामीटर मान पास करें

2) हर बार अलग-अलग सक्रिय सेटों के साथ एक स्पष्ट कर्सर को कई बार खोलें

कर्सर_नाम खोलें (पैरामीटर_वैल्यू, ……);

उदाहरण

DECLARE CURSOR cur1(v_deptno number) is Select deptname,dept_loc,dept_pincode from dept जहां deptno=v_deptno; Dept_record cur1%rowtype; l_deptno संख्या:=111; BEGIN OPEN cur1(112); LOOP FETCH cur1 dept_record में; अगर cur1% तब मिला Dbms_output.put_line(dept_record.deptname); ईएलएसई बाहर निकलें; अगर अंत; अंत लूप; बंद वक्र1; खुला cur1 (l_deptno); LOOP FETCH cur1 dept_record में; अगर cur1% तब मिला Dbms_output.put_line(dept_record.deptname); ईएलएसई बाहर निकलें; अगर अंत; अंत लूप; बंद वक्र1; अंत; // पूर्व> 

 संबंधित लेख

Oracle sql में तारीख के साथ कैसे काम करें
Oracle PLSQL टेबल्स
Oracle PLSQL रिकॉर्ड के बारे में सब कुछ
सबसे अधिक पूछे जाने वाले 25 oracle plsql साक्षात्कार प्रश्न
Oracle PLSQL ब्लॉक संरचना और Oracle PLSQL चर
कर्सर विशेषताएँ


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका में सभी पंक्तियों को अद्यतन करने का प्रभावी तरीका

  2. Oracle SQL:किसी तालिका को किसी अन्य तालिका के डेटा से अपडेट करें

  3. वैरिएबल कैसे घोषित करें और उसी Oracle SQL स्क्रिप्ट में इसका उपयोग कैसे करें?

  4. ओरेकल में एक अलग प्रारूप में तारीख कैसे प्रदर्शित करें?

  5. Oracle.DataClient का उपयोग करते समय प्रदाता Oracle क्लाइंट त्रुटि के संस्करण के साथ संगत नहीं है