यदि आपके पास APEX_UTIL
. तक पहुंच है , आप स्ट्रिंग्स को एक सरणी में पार्स कर सकते हैं, उन्हें संग्रह में परिवर्तित कर सकते हैं, फिर MULTISET EXCEPT
का उपयोग कर सकते हैं (जो माइनस के समान है लेकिन संग्रह के लिए):
SET SERVEROUT ON
DECLARE
TYPE set_t IS TABLE OF varchar2(100);
listA APEX_APPLICATION_GLOBAL.vc_arr2;
listB APEX_APPLICATION_GLOBAL.vc_arr2;
excpt set_t;
FUNCTION to_set_t (arr IN APEX_APPLICATION_GLOBAL.vc_arr2)
RETURN set_t IS
rset set_t := set_t();
BEGIN
rset.EXTEND(arr.COUNT);
FOR i IN 1..arr.COUNT LOOP
rset(i) := TRIM(arr(i));
END LOOP;
RETURN rset;
END;
BEGIN
-- parse lists into arrays
listA := APEX_UTIL.string_to_table('a1, b4, g3, h6, t8, a0',',');
listB := APEX_UTIL.string_to_table('b4, h6, a0, t8, a1',',');
-- convert arrays to collections, then do the minus
excpt := to_set_t(listA) MULTISET EXCEPT to_set_t(listB);
-- display the results
FOR i IN 1..excpt.COUNT LOOP
DBMS_OUTPUT.put_line(excpt(i));
END LOOP;
END;
परिणाम:
g3
MULTISET ऑपरेटरों के बारे में अधिक जानकारी, जिन्हें 10g में पेश किया गया था:http:// www.oracle-developer.net/display.php?id=303