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