2014-02-19 115 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