2014-02-19 2 views
0
DECLARE 
    TYPE type_pledge IS TABLE OF DD_PLEDGE%rowtype 
    index by binary_integer; 
    pledge_tab type_pledge; 
    paystring varchar2(500); 
BEGIN 
    SELECT * BULK COLLECT 
    INTO pledge_tab 
    FROM DD_PLEDGE 
    WHERE PLEDGEDATE >= '1-October-2012' AND PLEDGEDATE <= '31-October-2012'; 

    --Loop it 
    FOR i in pledge_tab.first .. pledge_tab.last 
    LOOP 
    IF pledge_tab.paymonths = 0 THEN 
     paystring := 'Lump Sum'; 
    ELSE 
     paystring := 'Monthly Payments'; 
    END IF; 
    END LOOP; 
END; 

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу ссылаться на переменную 'paymonths' в переменной таблицы, содержащую данные из таблицы DD_PLEDGE, без появления ошибки.Компонент должен быть объявлен

ORA-06550: line 15, column 19: 
PLS-00302: component 'PAYMONTHS' must be declared 

Как это решить? Я не могу понять, как правильно ссылаться, несмотря на многочисленные часы поиска.

ответ

1

Пожалуйста, используйте нижний индекс, как pledge_tab(i).paymonths Поскольку только строка pledge_tab имеет то, что определено.

--Loop it 
    FOR i in pledge_tab.first .. pledge_tab.last 
    LOOP 
    IF pledge_tab(i).paymonths = 0 THEN 
     paystring := 'Lump Sum'; 
    ELSE 
     paystring := 'Monthly Payments'; 
    END IF; 
    END LOOP; 
+0

Да, я отрезал этот сегмент из своего блока, перепродал его, и теперь он работает. Благодарю. Вероятно, просто ошибка в том, как я ее форматировал. – Orpheus

Смежные вопросы