Коллекции PLSQL - как использовать таблицу рекордов? - PullRequest
2 голосов
/ 11 ноября 2009

Я новичок в PL / SQL и пытаюсь использовать таблицу рекордов, но не знаю, как использовать эту функцию. В чем проблема?

    DECLARE
    TYPE TIP
    IS
        RECORD
        (
            F1 SMALLINT,
            F2 SMALLINT);
    TYPE Ve
    IS
        TABLE OF TIP;
v ve;
        IND SMALLINT := 0;
    BEGIN
        WHILE(IND<20)
        LOOP
            IND       := IND + 1;
            V(IND).F2 := IND-1;
            V(IND).F2 := IND;
        END LOOP;
    END; 

Что я делаю не так?

06531. 00000 -  "Reference to uninitialized collection"

1 Ответ

4 голосов
/ 11 ноября 2009

Вам нужно сделать два изменения.

v ve := ve(); 

Это инициализирует массив V. Это создаст пустую таблицу VE.

IND       := IND + 1;
v.extend(IND+1);
V(IND).F2 := IND-1;
V(IND).F2 := IND;

Далее следует вызов v.EXTEND (), чтобы убедиться, что в таблице достаточно записей для хранения ваших значений. Теперь это работает правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...