आप कमजोर टाइप किए गए REF CURSOR के आधार पर रिकॉर्ड प्रकार को परिभाषित नहीं कर सकते। चूंकि पैकेज में परिभाषित कर्सर प्रकार का उपयोग मनमाने कॉलम के साथ मनमानी क्वेरी से डेटा वापस करने के लिए किया जा सकता है, पीएल/एसक्यूएल कंपाइलर डेटा लाने के लिए उपयुक्त रिकॉर्ड प्रकार निर्धारित नहीं कर सकता है।
यदि आप जानते हैं कि फ़ंक्शन से वास्तविक डेटा लौटाया जा रहा है, तो आप डेटा को लाने के लिए उस प्रकार का रिकॉर्ड घोषित कर सकते हैं। उदाहरण के लिए, यदि मैं एक ऐसा फ़ंक्शन घोषित करता हूं जो कमजोर-टाइप किए गए कर्सर प्रकार को लौटाता है, लेकिन मुझे पता है कि कर्सर वास्तव में EMP
के आधार पर एक कर्सर लौटाता है तालिका, मैं डेटा को EMP%ROWTYPE
में ला सकता हूं रिकॉर्ड करें (ध्यान दें कि SYS_REFCURSOR
एक सिस्टम-परिभाषित कमजोर-टाइप किया गया REF CURSOR प्रकार है)
create or replace function f1
return sys_refcursor
is
l_rc sys_refcursor;
begin
open l_rc
for select *
from emp;
return l_rc;
end;
declare
l_rc sys_refcursor;
l_emp emp%rowtype;
begin
l_rc := f1;
loop
fetch l_rc into l_emp;
exit when l_rc%notfound;
dbms_output.put_line( l_emp.empno );
end loop;
end;