Oracle PL/SQL/PL SQL/Set

Материал из SQL эксперт
Перейти к: навигация, поиск

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.