जैसा कि मेरी टिप्पणी में बताया गया है, Oracle 11g तक किसी अन्य कर्सर के लिए sys_refcursor खोलने की अनुमति नहीं है। जैसा कि आप कुछ ऐसा करने की कोशिश कर रहे हैं जो sys_refcursor के उपयोग की मांग करता है, एक बार तरीका नीचे जैसा हो सकता है:
एक प्रकार बनाएं
CREATE TYPE va IS TABLE OF NUMBER;
/
ब्लॉक करें:
DECLARE
CURSOR c
IS
SELECT employee_id FROM employee;
rc SYS_REFCURSOR;
var va;
BEGIN
OPEN c;
FETCH c BULK COLLECT INTO var;
CLOSE c;
OPEN rc FOR SELECT COLUMN_VALUE FROM TABLE (var);
END;
/
आप यहां देखेंगे कि अंत में मैं फिर से एक SELECT
का उपयोग कर रहा हूं ref_cursor
. के लिए स्टेटमेंट . यह वैसा ही है जैसे यदि आप सामान्य तरीके से उपयोग नहीं करना चाहते हैं, तो मैंने वैकल्पिक तरीके का उपयोग किया है।