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

रेफ कर्सर को लूप करने के लिए रिकॉर्ड का उपयोग कैसे करें?

आप कमजोर टाइप किए गए 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;



  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. OBIEE RPD (भौतिक परत) में टेबल फ़ंक्शन का उपयोग करना और डैशबोर्ड प्रॉम्प्ट से पैरामीटर पास करना

  3. ODP.NET प्रक्रिया संकलन

  4. किसी स्तंभ के मान के आधार पर Oracle क्वेरी के परिणामों को कैसे प्रकट करें

  5. टाइमस्टैम्प में दिन जोड़ें