Oracle PL/SQL Tutorial/Collections/Varray Methods

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

Collection Methods

SQL> -- EXISTS
SQL> DECLARE
  2    TYPE numberVarray IS VARRAY(5)OF NUMBER;
  3
  4    v_numarray numberVarray :=numberVarray(10,20,30,40,50);
  5
  6  BEGIN
  7
  8    IF v_numarray.EXISTS(4) THEN
  9
 10      DBMS_OUTPUT.PUT_LINE("The element 4 exists in the variable array.");
 11
 12    END IF;
 13
 14  END;
 15  /
The element 4 exists in the variable array.
PL/SQL procedure successfully completed.
SQL>
SQL>


COUNT

SQL> DECLARE
  2    TYPE numberVarray IS VARRAY(10)OF NUMBER;
  3
  4    v_numarray numberVarray :=numberVarray(10,20,30,40,50);
  5
  6    TYPE numberTableType IS TABLE OF NUMBER;
  7
  8    v_numlist numberTableType :=numberTableType(101,201,301,401);
  9
 10  BEGIN
 11
 12    DBMS_OUTPUT.PUT_LINE("Varray Count = "||TO_CHAR(v_numarray.COUNT));
 13
 14    DBMS_OUTPUT.PUT_LINE("Nested Table Count = "||TO_CHAR(v_numlist.COUNT));
 15  END;
 16  /
Varray Count = 5
Nested Table Count = 4
PL/SQL procedure successfully completed.
SQL>
SQL>


EXTEND

SQL> DECLARE
  2    TYPE numberVarray IS VARRAY(10)OF NUMBER;
  3
  4    v_numarray numberVarray :=numberVarray(NULL,NULL);
  5
  6    TYPE numberTableType IS TABLE OF NUMBER;
  7
  8    v_numlist numberTableType :=numberTableType(NULL);
  9  BEGIN
 10    v_numarray(1):=1001;
 11
 12    v_numarray(2):=1002;
 13
 14    v_numarray.EXTEND;
 15
 16    v_numarray(3):=1003;
 17
 18
 19    v_numlist(1):=101;
 20
 21    v_numlist.EXTEND(5);
 22
 23    v_numlist(5):=105;
 24  END;
 25  /
PL/SQL procedure successfully completed.
SQL>


Extend and count attributes of varray

SQL>
SQL> DECLARE
  2     TYPE lv_name_array IS VARRAY(5) OF VARCHAR2(10);
  3     lv_name_array_rec lv_name_array := lv_name_array("dave","pat","bob");
  4  BEGIN
  5     FOR lv_loop_num in 1..lv_name_array_rec.COUNT LOOP
  6        DBMS_OUTPUT.PUT_LINE(lv_name_array_rec(lv_loop_num));
  7     END LOOP;
  8     lv_name_array_rec.EXTEND;
  9     lv_name_array_rec(lv_name_array_rec.COUNT) := "tony";
 10     DBMS_OUTPUT.PUT_LINE(lv_name_array_rec(4));
 11  END;
 12  /
dave
pat
bob
tony
PL/SQL procedure successfully completed.
SQL>


LIMIT

SQL> DECLARE
  2    TYPE numberVarray IS VARRAY(10)OF NUMBER;
  3
  4    v_numarray numberVarray :=numberVarray(10,20,30);
  5
  6  BEGIN
  7
  8    DBMS_OUTPUT.PUT_LINE("Varray Count = "||TO_CHAR(v_numarray.COUNT));
  9
 10    DBMS_OUTPUT.PUT_LINE("Varray Limit = "||TO_CHAR(v_numarray.LIMIT));
 11  END;
 12  /
Varray Count = 3
Varray Limit = 10
PL/SQL procedure successfully completed.
SQL>
SQL>