В этом учебном пособии вы узнаете, как использовать MULTISET INTERSECT DISTINCT в Oracle PL/SQL с синтаксисом и примерами.
Описание
В Oracle PL/SQL операция над коллекциями MULTISET INTERSECT DISTINCT возвращает пересечение двух коллекций с дистинктом (убирает дубли)
Синтаксис
Синтаксис MULTISET INTERSECT DISTINCT в Oracle PL/SQL:
nt1 MULTISET INTERSECT DISTINCT nt2
Параметры или аргументы
nt1, nt2 - коллекции, в результате пересечения которых устраняются дубликаты.
Примечание
- Операции возможны только с коллекциями nested tables. Обе коллекции, которые участвуют в операции, должны быть одного типа. Результатом операции также является коллекция nested tables.
Пример
Рассмотрим пример операции над коллекциями MULTISET INTERSECT DISTINCT, чтобы понять, как использовать MULTISET INTERSECT 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 := nt2 MULTISET INTERSECT 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('nt2 MULTISET INTERSECT DISTINCT nt3 = '||reslt); --Результат: nt2 MULTISET INTERSECT DISTINCT nt3 = 3, 2, 1 END; |
Еще пример MULTISET INTERSECT 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 := nt2 MULTISET INTERSECT 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('nt2 MULTISET INTERSECT DISTINCT nt3 = '||reslt); --Результат: nt2 MULTISET INTERSECT DISTINCT nt3 = бета, гамма, альфа END; |