Oracle PL/SQL Tutorial/Collections/CARDINALITY

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

CARDINALITY Operator

CARDINALITY operator gets the number of elements in a nested table.



   <source lang="sql">

SQL> SQL> CREATE OR REPLACE PROCEDURE cardinality_example AS

 2    TYPE nestedTableType IS TABLE OF VARCHAR2(10);
 3    myTable1 nestedTableType;
 4    cardinality_var INTEGER;
 5  BEGIN
 6    myTable1 := nestedTableType("F", "G", "S");
 7    cardinality_var := CARDINALITY(myTable1);
 8    DBMS_OUTPUT.PUT_LINE("cardinality_var = " || cardinality_var);
 9  END cardinality_example;
10  /

Procedure created. SQL> CALL cardinality_example(); cardinality_var = 3 Call completed. SQL> SQL></source>


CARDINALITY operator lets count the elements in a collection.

   <source lang="sql">

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);
 3  BEGIN
 4    dbms_output.put_line(CARDINALITY(a));
 5  END;
 6  /

6 PL/SQL procedure successfully completed.</source>


CARDINALITY table collection

   <source lang="sql">

SQL> CREATE OR REPLACE PROCEDURE cardinality_example AS

 2    TYPE charTable IS TABLE OF VARCHAR2(10);
 3    emp1 charTable;
 4    cardinality_var INTEGER;
 5  BEGIN
 6    emp1 := charTable("A", "B", "C");
 7    cardinality_var := CARDINALITY(emp1);
 8    DBMS_OUTPUT.PUT_LINE("cardinality_var = " || cardinality_var);
 9  END cardinality_example;
10  /

Procedure created. SQL></source>