Oracle从number类型的数组中获取distict值
我在下面定义了一个数组类型-Oracle从number类型的数组中获取distict值,oracle,plsql,Oracle,Plsql,我在下面定义了一个数组类型- TYPE INPUT_ARRAY_NUM IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; 我已将上述类型的变量定义为- temp INPUT_ARRAY_NUM; 用以下值填充它们- temp(0) := 1; temp(1) := 1; temp(2) := 3; 如何获得不同的值(1,3)?您可以使用嵌套表和多集操作 MULTISET操作中的DISTINCT关键字将从集合中删除重复项 比如说, SQL> SET
TYPE INPUT_ARRAY_NUM IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
我已将上述类型的变量定义为-
temp INPUT_ARRAY_NUM;
用以下值填充它们-
temp(0) := 1;
temp(1) := 1;
temp(2) := 3;
如何获得不同的值(1,3)?您可以使用嵌套表和
多集
操作
MULTISET
操作中的DISTINCT关键字将从集合中删除重复项
比如说,
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.
下面的代码片段将打印一个数组的不同值,您可以使用它
FOR y IN ( SELECT DISTINCT column_value
FROM TABLE ( CAST (newsites As siteArray ))
)
LOOP
Dbms_Output.Put_Line ('VAlue = ' || y.column_value);
END LOOP;
Dosen't work在call error中抛出错误的参数数量或类型。@RAZER这是一个简单的例子,我想你可以想出如何使它实际工作。无论如何,我现在已经添加了一个工作示例,请查看。@RAZER没问题:-)现在您知道怎么做了。
FOR y IN ( SELECT DISTINCT column_value
FROM TABLE ( CAST (newsites As siteArray ))
)
LOOP
Dbms_Output.Put_Line ('VAlue = ' || y.column_value);
END LOOP;