SQL में जब हम किसी query को execute करते हैं, तो उसके result को row-by-row process करने की आवश्यकता होती है।
ऐसे में SQL एक खास mechanism का उपयोग करता है जिसे कहते हैं Cursor (कर्सर)
Cursor क्या होता है? (What is Cursor in SQL)
जब कोई SQL statement execute होता है,
तो Oracle या SQL Server एक special memory area create करता है जिसे कहते हैं Context Area।
यह area SQL query से जुड़े records और information को temporarily store करता है।
और इस memory area को access या control करने के लिए Cursor का इस्तेमाल किया जाता है।
सरल शब्दों में:
“Cursor SQL में एक pointer होता है जो query result को row-by-row access करने के लिए use किया जाता है।”

Cursor का कार्य (How Cursor Works)
जब कोई query execute होती है
- Database एक context area (memory) बनाता है
- Cursor उस area को point करता है
- Cursor result को एक-एक करके fetch करता है
- Programmer cursor से data को read या modify कर सकता है
इस तरह Cursor हमें SQL result को step-by-step process करने की सुविधा देता है।
SQL Cursor के प्रकार (Types of SQL Cursors)
SQL में Cursor दो प्रकार के होते हैं
1. Implicit Cursor
- यह automatically create हो जाता है जब कोई SQL statement run होती है।
- User को इसे manually define या open करने की जरूरत नहीं होती।
- यह छोटे queries (जैसे INSERT, UPDATE, DELETE) के लिए useful होता है।
- Programmers implicit cursor के internal data को control नहीं कर सकते।
Example:
जब आप UPDATE Employees SET Salary = Salary + 1000; चलाते हैं,
तो SQL अपने आप implicit cursor बना देता है ताकि updated rows को track किया जा सके।
2. Explicit Cursor
- यह user-defined cursor होता है।
- इसे manually declare, open, fetch, और close करना होता है।
- जब हमें query के result set पर row-by-row operation करना होता है,
तब Explicit Cursor का प्रयोग किया जाता है।
Explicit Cursor का Syntax
यहाँ cursor_name user-defined नाम है, और query वो records fetch करती है
जिन्हें हम बाद में cursor के माध्यम से row-by-row process करेंगे।
Explicit Cursor Management Steps
Explicit Cursor को manage करने के लिए चार basic steps होते हैं-
| Step | Description |
|---|---|
| Declare Cursor | Cursor और उसकी SQL query को define करें |
| Open Cursor | Cursor को activate करें ताकि records access हो सकें |
| Fetch Data | Cursor से एक-एक करके data fetch करें |
| Close Cursor | Memory release करने के लिए cursor को बंद करें |
Cursor Attributes (कर्सर के मुख्य Attributes)
| Attribute | Description |
|---|---|
| %ISOPEN | अगर cursor open है तो TRUE लौटाता है, वरना FALSE |
| %FOUND | अगर cursor ने कोई record fetch किया है तो TRUE लौटाता है |
| %NOTFOUND | अगर कोई record नहीं मिला तो TRUE लौटाता है |
| %ROWCOUNT | अब तक fetch किए गए rows की संख्या बताता है |
Example – Explicit Cursor Program
DECLARE
CURSOR emp_cursor IS
SELECT EmpName, Salary FROM Employees WHERE Department = 'Sales';
emp_record Employees%ROWTYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO emp_record;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Employee: ' || emp_record.EmpName ||
' Salary: ' || emp_record.Salary);
END LOOP;
CLOSE emp_cursor;
END;- यहाँ
emp_cursorनाम का cursor बनाया गया है। - यह Sales department के सभी employees को fetch करता है।
- Loop में एक-एक करके rows पढ़ी जाती हैं।
- अंत में cursor को close कर दिया जाता है।
Cursor के फायदे (Advantages of Cursor)
| लाभ | विवरण |
|---|---|
| Row-wise processing | एक-एक record पर operation कर सकते हैं |
| Control | Result set पर अधिक नियंत्रण मिलता है |
| Dynamic logic | Complex PL/SQL logic लागू कर सकते हैं |
| Memory management | Controlled way में data fetch होता है |
Cursor के नुकसान (Disadvantages)
- Performance slow होती है (row-by-row processing की वजह से)
- ज्यादा memory consume करता है
- Large data set के साथ inefficient होता है
- Complex PL/SQL code बढ़ जाता है
Implicit vs Explicit Cursor Comparison
| Feature | Implicit Cursor | Explicit Cursor |
|---|---|---|
| Creation | Automatically | Manually by user |
| Control | Limited | Full control |
| Usage | Single SQL statements | Multiple row processing |
| Example | UPDATE, DELETE, INSERT | SELECT queries with multiple rows |
इन्हें भी पढ़े –
- DBMS क्या है DBMS के प्रकार और कार्य की पूरी जानकारी | DBMS In Hindi
- डेटाबेस यूजर्स क्या है?
- डेटा इंडिपेंडेंस क्या है
- DBMS के लाभ
- Characteristics Of DBMS In Hindi
- डेटा मॉडल क्या है?
- डेटाबेस स्कीमा क्या है
- इंस्टैंस क्या है
- डेटाबेस इंटरफ़ेस क्या है
- डेटाबेस लैंग्वेज क्या है
- Classification of DBMS in Hindi
- Entity Set in DBMS
- DBMS Architecture in Hindi
- Types of Data Models in Hindi
- Attributes in DBMS in Hindi
- Entity Set in DBMS (Hindi)
- Entity Types in DBMS (Hindi)
- Types of Attributes in DBMS
- ER Model in DBMS (E-R मॉडल) क्या है?
- Entities के बीच संबंध
- Domain in DBMS
- Tuples in DBMS
- SQL में Joins क्या हैं?
- Primary Key in DBMS
- DBMS Keys in Hindi
- DBMS Data Integrity in Hindi
- Relational Algebra in DBMS
- Normalization in DBMS क्या है?
- BCNF (Boyce-Codd Normal Form) in DBMS
- Functional Dependency in DBMS
- Non-Loss Decomposition in DBMS
- SQL Data Types in Hindi
- Create Table in SQL in Hindi
- SQL DROP TABLE और ALTER TABLE in Hindi
- SQL Indexes in Hindi
- SDLC in Hindi
- DBLC in Hindi
- SQL Views in Hindi
- PL/SQL PROCEDURES in hindi
- Database Normalization in Hindi
- Domain Key Normal Form in Hindi
- SQL Objects in Hindi
- Aggregation, Generalization, Specialization and Association in Hindi
- Data Dictionary क्या है?
- डेटा वेयरहाउसिंग क्या है?
- डाटा माइनिंग क्या है?
RivnTech Pro Tip:
अगर आपको performance बढ़ानी है,
तो cursor का इस्तेमाल छोटे datasets या complex logic वाली queries के लिए करें।
Large data process करने के लिए bulk operations या cursor FOR loops ज़्यादा बेहतर हैं।
निष्कर्ष (Conclusion)
Cursor SQL का एक powerful tool है जो query results को row-by-row process करने की सुविधा देता है।
यह दो प्रकार का होता है – Implicit और Explicit।
हालांकि इसका उपयोग सावधानी से करना चाहिए क्योंकि यह memory और performance को प्रभावित कर सकता है।