Oracle从类型号数组中获取distict值

Ale*_*vid 4 oracle plsql

我有一个下面定义的数组类型 -

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)?

Lal*_*r B 7

您可以使用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)