plsql
संग्रह और रिकॉर्ड
खोज…
विभाजन फ़ंक्शन के लिए रिटर्न प्रकार के रूप में एक संग्रह का उपयोग करें
प्रकार की घोषणा करना आवश्यक है; यहाँ 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