जब आप कोई क्वेरी निष्पादित करते हैं तो Oracle द्वारा आपके लिए एक अंतर्निहित कर्सर "स्वचालित रूप से" बनाया जाता है। यह कोड करना आसान है, लेकिन
. से ग्रस्त है- अक्षमता (एएनएसआई मानक निर्दिष्ट करता है कि एक से अधिक रिकॉर्ड होने की जांच करने के लिए इसे दो बार प्राप्त करना होगा)
- डेटा त्रुटियों के प्रति संवेदनशीलता (यदि आपको कभी भी दो पंक्तियाँ मिलती हैं, तो यह एक TOO_MANY_ROWS अपवाद उत्पन्न करती है)
उदाहरण
SELECT col INTO var FROM table WHERE something;
एक स्पष्ट कर्सर वह है जिसे आप स्वयं बनाते हैं। यह अधिक कोड लेता है, लेकिन अधिक नियंत्रण देता है - उदाहरण के लिए, यदि आप केवल पहला रिकॉर्ड चाहते हैं तो आप केवल ओपन-फ़ेच-क्लोज़ कर सकते हैं और अन्य होने पर परवाह नहीं करते हैं।
उदाहरण
DECLARE
CURSOR cur IS SELECT col FROM table WHERE something;
BEGIN
OPEN cur;
FETCH cur INTO var;
CLOSE cur;
END;