खोज…


विभाजन फ़ंक्शन के लिए रिटर्न प्रकार के रूप में एक संग्रह का उपयोग करें

प्रकार की घोषणा करना आवश्यक है; यहाँ t_my_list ; एक संग्रह कुछ की एक TABLE OF something

CREATE OR REPLACE TYPE t_my_list AS TABLE OF VARCHAR2(100);

यहाँ समारोह है। सूचना () उपयोग एक प्रकार के निर्माणकर्ता के रूप में किया जाता है, और COUNT और EXTEND कीवर्ड जो आपके संग्रह को बनाने और विकसित करने में आपकी सहायता करते हैं;

CREATE OR REPLACE
FUNCTION cto_table(p_sep in Varchar2, p_list IN VARCHAR2)
  RETURN t_my_list
AS
--- this function takes a string list, element being separated by p_sep
--                                                         as separator
  l_string VARCHAR2(4000) := p_list || p_sep;
  l_sep_index PLS_INTEGER;
  l_index PLS_INTEGER := 1;
  l_tab t_my_list     := t_my_list();
BEGIN
  LOOP
    l_sep_index := INSTR(l_string, p_sep, l_index);
    EXIT
  WHEN l_sep_index = 0;
    l_tab.EXTEND;
    l_tab(l_tab.COUNT) := TRIM(SUBSTR(l_string,l_index,l_sep_index - l_index));
    l_index            := l_sep_index + 1;
  END LOOP;
  RETURN l_tab;
END cto_table;
/

तब आप SQL से TABLE() फ़ंक्शन के साथ संग्रह की सामग्री देख सकते हैं; इसे SQL IN ( ..) स्टेटमेंट के अंदर एक सूची के रूप में इस्तेमाल किया जा सकता है:

select * from A_TABLE 
 where A_COLUMN in ( TABLE(cto_table('|','a|b|c|d')) )
--- gives the records where A_COLUMN in ('a', 'b', 'c', 'd') --


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow