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

आर में ओरेकल संग्रहीत प्रक्रियाओं को कॉल करना - परिणाम सेट कैसे प्राप्त करें?

मैं विशेष रूप से आर के साथ आपकी मदद नहीं कर सकता, लेकिन आप कहते हैं कि आपको ओरेकल प्रक्रियाओं को कॉल करने में समस्याएं आ रही हैं जो आउट पैरा को sys_refcursors के रूप में उपयोग करते हैं। आप यह भी संकेत देते हैं कि यह क्षमता अभी तक लागू नहीं की जा सकती है। हालांकि, आप कहते हैं कि आप "टेबल से कॉलम का चयन" कर सकते हैं।

इसलिए, मैं प्रक्रियाओं को पाइपलाइन किए गए फ़ंक्शन कॉल में बदलने का प्रस्ताव करता हूं, और फिर ओरेकल से अपना डेटा प्राप्त करने के लिए एक साधारण चयन कर रहा हूं। एक छोटा सा उदाहरण:

CREATE OR REPLACE package pkg1 as

  type t_my_rec is record
  (
    num my_table.num%type,
    val my_table.val%type
  );

  type t_my_tab is table of t_my_rec;

  function get_recs(i_rownum in number)
      return t_my_tab
      pipelined;

END pkg1;

पैकेज बॉडी:

create or replace package body pkg1 as

  function get_recs(i_rownum in number)
      return t_my_tab
      pipelined
  IS
    my_rec t_my_rec;
  begin

    -- get some data
    -- implement same business logic as in procedure
    for my_rec in (select num, val from my_table where rownum <= i_rownum)
    loop
      pipe row(my_rec);
    end loop;
    return; 

  end get_recs;

end pkg1;

उपयोग:

select * from table(pkg1.get_recs(3));

या:

select num, val from table(pkg1.get_recs(3));

यह डेटा की 3 पंक्तियाँ लौटाएगा, जैसे एक प्रक्रिया समान डेटा लौटाएगी। केवल इस तरह आप इसे एक चुनिंदा बयान से प्राप्त कर सकते हैं (जिसे आप आर से संभालने में सक्षम हैं)।

आशा है कि यह मदद करता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जहां स्थिति pl/sql . के लिए एक सरणी के माध्यम से लूपिंग

  2. डायनामिक एसक्यूएल निष्पादित करने वाले ओरेकल पीएल/एसक्यूएल अज्ञात ब्लॉक से परिणामसेट/कर्सर कैसे वापस करें?

  3. पीएल एसक्यूएल में बड़े टेक्स्ट/सीएसवी फाइल को कई फाइलों में विभाजित करें

  4. वर्ष 2012 वाले रिकॉर्ड प्राप्त करने के लिए हाइबरनेट मानदंड

  5. Oracle 21c को SQL सर्वर से कनेक्ट करना