0
I have a table and it has 5 records I Want to create an VARRAY and fetch all firstName into The VARRAY using cursor
DECLARE v_FirstName PHONEBOOK.FIRSTNAME%TYPE; TYPE arrayNames IS VARRAY(10) OF VARCHAR2(20); v1 arrayNames; i INT := 0; CURSOR c_phonebook IS SELECT FIRSTNAME FROM PHONEBOOK; BEGIN v1 := arrayNames(); OPEN c_phonebook; LOOP FETCH c_phonebook INTO v_firstname; v1(i) := v_firstname; i := i+1; EXIT WHEN c_phonebook%NOTFOUND; END LOOP; CLOSE c_phonebook; END;/ i have an error: ORA-06532: Subscript outside of limit ORA-06512: at line 14 06532. 00000 - "Subscript outside of limit" pls help me
2 Antworten
+ 1
You should extend the varray.
 
Check the below code :
DECLARE 
  v_FirstName PHONEBOOK.FIRSTNAME%TYPE; 
  TYPE arrayNames IS VARRAY(10) OF VARCHAR2(20); 
  v1 arrayNames; 
  i INT := 0; 
  
  CURSOR c_phonebook IS 
     SELECT FIRSTNAME 
	   FROM PHONEBOOK; 
	   
BEGIN 
  v1 := arrayNames(); 
  
  FOR rec IN c_phonebook LOOP
    i := i + 1;
    v1.extend();
    v1(i) := rec.FIRSTNAME;
  END LOOP;
  -- check varray values
  FOR idx IN 1..v1.count LOOP
    DBMS_OUTPUT.PUT_LINE (v1(idx));
  END LOOP;
END;
/
+ 1
thanks so much



