2014-02-19 117 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; 

问题我遇到的情况是,我似乎无法引用包含来自DD_PLEDGE表的数据的表变量中的'paymonths'变量,而不会出现错误。组件必须声明

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