エラー メッセージにあるように、コレクション変数を初期化する必要があります。
...
BEGIN
codes_ := code_array_();
...
ただし、ループのたびに単一の拡張機能を使用して、サイズを変更する必要もあります。
FOR i IN 1..26 LOOP
codes_.extend;
...
または、開始前の 1 回限りの延長:
...
BEGIN
codes_ := code_array_();
...
codes_.extend(26);
FOR i IN 1..26 LOOP
...
拡張後のサイズを使用してループを制御し、ハードコーディング 26 を再度保存することもできます。
DECLARE
TYPE code_array_ IS VARRAY(26) OF VARCHAR2(6);
codes_ code_array_;
BEGIN
codes_ := code_array_();
codes_.extend(26);
FOR i IN 1..codes_.count LOOP
codes_(i) := dbms_random.string('U',6);
END LOOP;
END;
/
PL/SQL procedure successfully completed.
コレクションの詳細をお読みください。