我有一个下面定义的数组类型 -
TYPE INPUT_ARRAY_NUM IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
Run Code Online (Sandbox Code Playgroud)
我已将上述类型的变量定义为 -
temp INPUT_ARRAY_NUM;
Run Code Online (Sandbox Code Playgroud)
用以下值填充它们 -
temp(0) := 1;
temp(1) := 1;
temp(2) := 3;
Run Code Online (Sandbox Code Playgroud)
如何获得不同的值(1,3)?
您可以使用NESTED TABLE并使用MULTISET操作.
该DISTINCT在关键字MULTISET操作删除了重复的从集合.
例如,
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 TYPE t_tab IS TABLE OF NUMBER;
3 l_tab1 t_tab := t_tab(1,1,3,3,5,5);
4 BEGIN
5 l_tab1 := l_tab1 MULTISET INTERSECT DISTINCT l_tab1;
6 FOR i IN l_tab1.first .. l_tab1.last
7 LOOP
8 DBMS_OUTPUT.put_line('Distinct values are '||l_tab1(i));
9 END LOOP;
10 END;
11 /
Distinct values are 1
Distinct values are 3
Distinct values are 5
PL/SQL procedure successfully completed.
Run Code Online (Sandbox Code Playgroud)