必须声明组件

时间:2014-02-19 01:34:30

标签: oracle plsql

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 个答案:

答案 0 :(得分: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;