В этом учебном пособии вы узнаете, как использовать MULTISET EXCEPT DISTINCT в Oracle PL/SQL с синтаксисом и примерами.
Описание
В Oracle PL/SQL операция над коллекциями MULTISET EXCEPT DISTINCT возвращает разницу (усечение) двух коллекций с дистинктом (убирает дубли)
Синтаксис
Синтаксис MULTISET EXCEPT DISTINCT в Oracle PL/SQL:
nt2 MULTISET EXCEPT DISTINCT nt1
Параметры или аргументы
nt2, nt1 - коллекции, в результате усечения которых устраняются дубликаты.
Примечание
- Операции возможны только с коллекциями nested tables. Обе коллекции, которые участвуют в операции, должны быть одного типа. Результатом операции также является коллекция nested tables.
Пример
Рассмотрим пример операции над коллекциями MULTISET EXCEPT DISTINCT, чтобы понять, как использовать MULTISET EXCEPT DISTINCT в Oracle PL/SQL. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
DECLARE reslt varchar2(100); TYPE nested_typ IS TABLE OF NUMBER; nt2 nested_typ := nested_typ(3,2,1); nt3 nested_typ := nested_typ(2,3,1,3,4); answer nested_typ; BEGIN answer := nt3 MULTISET EXCEPT 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('nt3 MULTISET EXCEPT DISTINCT nt2 = '||reslt); --Результат: nt3 MULTISET EXCEPT DISTINCT nt2 = 4 END; |
Еще пример MULTISET EXCEPT DISTINCT со строковыми коллекциями.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
DECLARE reslt varchar2(100); TYPE nested_typ IS TABLE OF varchar2(20); nt2 nested_typ := nested_typ('бета','гамма','альфа'); nt3 nested_typ := nested_typ('бета','альфа','гамма','дельта','гамма'); answer nested_typ; BEGIN answer := nt3 MULTISET EXCEPT 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('nt3 MULTISET EXCEPT DISTINCT nt2 = '||reslt); --Результат: nt3 MULTISET EXCEPT DISTINCT nt2 = дельта END; |