Oracle PL/SQL/PL SQL/Set
SET operator removes any duplicates from the set and returns a new set with unique values
SQL> CREATE OR REPLACE TYPE list IS TABLE OF NUMBER;
2 /
Type created.
SQL>
SQL> CREATE OR REPLACE FUNCTION format_list(set_in LIST) RETURN VARCHAR2 IS
2 returnValue VARCHAR2(2000);
3 BEGIN
4 FOR i IN set_in.FIRST..set_in.LAST LOOP
5 returnValue := set_in(i)||" ";
6 END LOOP;
7 RETURN returnValue;
8 END format_list;
9 /
Function created.
SQL>
SQL> DECLARE
2 a LIST := list(1,2,3,3,4,4,5,6,6,7);
3 BEGIN
4 dbms_output.put_line(format_list(SET(a)));
5 END;
6 /
7
PL/SQL procedure successfully completed.
SET(table collection)
SQL> CREATE OR REPLACE PROCEDURE set_example AS
2 TYPE charTable IS TABLE OF VARCHAR2(10);
3 emp1 charTable;
4 emp2 charTable;
5 count_var INTEGER;
6 BEGIN
7 emp1 := charTable("A", "B", "C", "S");
8 emp2 := SET(emp1);
9 DBMS_OUTPUT.PUT("emp2: ");
10 FOR count_var IN 1..emp2.COUNT LOOP
11 DBMS_OUTPUT.PUT(emp2(count_var) || " ");
12 END LOOP;
13 DBMS_OUTPUT.PUT_LINE(" ");
14 END set_example;
15 /
Procedure created.