В этом учебном пособии вы узнаете, как использовать MULTISET UNION DISTINCT в Oracle PL/SQL с синтаксисом и примерами.
Описание
В Oracle PL/SQL операция над коллекциями MULTISET UNION DISTINCT возвращает объединение двух коллекций с дистинктом (убирает дубли)
Синтаксис
Синтаксис MULTISET UNION DISTINCT в Oracle PL/SQL:
nt1 MULTISET UNION DISTINCT nt2
Параметры или аргументы
nt1, nt2 - коллекции, в результате объединения которых устраняются дубликаты.
Примечание
- Операции возможны только с коллекциями nested tables. Обе коллекции, которые участвуют в операции, должны быть одного типа. Результатом операции также является коллекция nested tables.
Пример
Рассмотрим пример операции над коллекциями MULTISET UNION DISTINCT, чтобы понять, как использовать MULTISET UNION DISTINCT в Oracle PL/SQL.
Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
DECLARE reslt varchar2(100); TYPE nested_typ IS TABLE OF NUMBER; nt1 nested_typ := nested_typ(1,2,3); nt2 nested_typ := nested_typ(3,2,1); nt3 nested_typ := nested_typ(2,3,1,3); answer nested_typ; BEGIN answer := nt1 MULTISET UNION DISTINCT nt2; for iter in answer.first .. answer.last loop if iter = 1 then reslt:=answer(iter); else reslt := reslt ||', '||to_char(answer(iter)); end if; end loop; dbms_output.put_line('nt1 MULTISET UNION DISTINCT nt2 = '||reslt); --Результат: nt1 MULTISET UNION DISTINCT nt2 = 1, 2, 3 answer := nt1 MULTISET UNION DISTINCT nt3; for iter in answer.first .. answer.last loop if iter = 1 then reslt:=answer(iter); else reslt := reslt ||', '||to_char(answer(iter)); end if; end loop; dbms_output.put_line('nt1 MULTISET UNION DISTINCT nt3 = '||reslt); --Результат: nt1 MULTISET UNION DISTINCT nt3 = 1, 2, 3 END; |
Еще пример MULTISET UNION DISTINCT со строковыми коллекциями.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
DECLARE reslt varchar2(100); TYPE nested_typ IS TABLE OF varchar2(20); nt1 nested_typ := nested_typ('альфа','бета','гамма'); nt2 nested_typ := nested_typ('бета','гамма','альфа'); nt3 nested_typ := nested_typ('бета','альфа','гамма','дельта'); answer nested_typ; BEGIN answer := nt1 MULTISET UNION DISTINCT nt2; for iter in answer.first .. answer.last loop if iter = 1 then reslt:=answer(iter); else reslt := reslt ||', '||answer(iter); end if; end loop; dbms_output.put_line('nt1 MULTISET UNION DISTINCT nt2 = '||reslt); --Результат: nt1 MULTISET UNION DISTINCT nt2 = альфа, бета, гамма, бета, гамма, альфа answer := nt1 MULTISET UNION DISTINCT nt3; for iter in answer.first .. answer.last loop if iter = 1 then reslt:=answer(iter); else reslt := reslt ||', '||answer(iter); end if; end loop; dbms_output.put_line('nt1 MULTISET UNION DISTINCT nt3 = '||reslt); --Результат: nt1 MULTISET UNION DISTINCT nt3 = альфа, бета, гамма, бета, альфа, гамма, дельта END; |