Skip to main content

SQL Varrays

Example 01:

DECLARE 

CURSOR NAME_CUR IS
SELECT LAST_NAME FROM STUDENT WHERE ROWNUM<=10;

TYPE LASTNAME_TYPE IS VARRAY(10) OF STUDENT.LAST_NAME % TYPE;
LAST_NAME_VARRAY LAST_NAME=LASTNAME_TYPE();

V_COUNT INTEGER=0;

BEGIN
FOR NAME_REC IN  NAME_CUR LOOP
 V_COUNT=V_COUNT+1;
 LAST_NAME_VARRAY(V_COUNT)=NAME_REC.LAST_NAME;
 DBMS_OUTPUT.PUT_LINE('LAST NAME('||V_COUNT||'):'||LAST_NAME_VARRAY(V_COUNT));
END LOOP;
END;

Example 02:

DECLARE

TYPE MY_VARRAY_TYPE IS VARRAY(10) OF NUMBER;
VARRAY MY_VARRAY_TYPE=MY_VARRAY_TYPE(1,2,3,4);

BEGIN
DBMS_OUTPUT.PUT_LINE('MY VARRAY COUNT='||VARRAY.COUNT);
DBMS_OUTPUT.PUT_LINE('MY VARRAY LIMIT='||VARRAY.LIMIT);
DBMS_OUTPUT.PUT_LINE('MY VARRAY FIRST='||VARRAY.FIRST);
DBMS_OUTPUT.PUT_LINE('MY VARRAY LAST='||VARRAY.LAST);
VARRAY.EXTEND(2,4)
DBMS_OUTPUT.PUT_LINE('MY VARRAY LAST='||VARRAY.LAST);
DBMS_OUTPUT.PUT_LINE('MY VARRAY('||VARRAY.LAST||')='||VARRAY(VARRAY.LAST));
VARRAY.TRIM(2);
DBMS_OUTPUT.PUT_LINE('MY VARRAY LAST='||VARRAY.LAST);
END;

MY_VARRAY.COUNT=6
MY_VARRAY.LIMIT=10
MY_VARRAY.FIRST=1
MY_VARRAY.LAST=8
MY_VARRAY(8)=4
MY_VARRAY.LAST=6

Comments

Popular posts from this blog

Insert script with multiple cursors and condition check

DECLARE CURSOR C1 IS   SELECT ID FROM TABLE_NAME_1 WHERE COLUMN IN ('');   CURSOR C2     IS       SELECT ID FROM TABLE_NAME_2 WHERE COLUMN IN ('');              CURSOR C3 (CP_TABLE_01_ID NUMBER,CP_TABLE_02_ID NUMBER)         IS           SELECT COUNT(*) AS COUNT_UP           FROM TABLE_NAME_3           WHERE COLUMN_CONDITION_01=CP_TABLE_02_ID           AND COLUMN_CONDITION_02=CP_TABLE_01_ID; COUNT_UP NUMBER; BEGIN FOR R1 IN C1 LOOP     FOR R2 IN C2     LOOP          OPEN C3(R1.ID,R2.ID);        FETCH C3 INTO COUNT_UP;        CLOSE C3;               IF (COUNT_UP=0) THEN           INSERT           INTO TABL...

REF Cursor

REF CURSOR WILL BE DYNAMICALLY OPENS OR OPEN BASED ON A LOGIC. DECLARE TYPE C1 IS REF CURSOR ; CURSOR C IS SELECT * FROM DUAL; REF_CURSOR RC; BEGIN IF (TO_CHAR(SYSDATE, 'DD' ) = 30 ) THEN OPEN REF_CURSOR FOR 'SELECT * FROM TABLE1' ; ELSIF ( TO_CHAR(SYSDATE, 'DD' ) = 29 ) THEN OPEN REF_CURSOR FOR SELECT * FROM TABLE2; ELSE OPEN REF_CURSOR FOR SELECT * FROM DUAL; END IF ; OPEN C; END ;