Procedure Pro_Bandingcombobox(P_Tablename In Varchar2 --表名
                               ,
                                P_Fieldname In Varchar2 --字段名
                               ,
                                P_Dspage    Out Ref_Cur) As
    Sqlstr Varchar2(2000);
  Begin
    Sqlstr := 'select distinct ' || P_Fieldname || ' from ' || P_Tablename ||
              ' order by ' || P_Fieldname;
    Open P_Dspage For Sqlstr;  End Pro_Bandingcombobox;set serveroutput on;
DECLARE
  P_TABLENAME VARCHAR2(200);
  P_FIELDNAME VARCHAR2(200);
  P_DSPAGE PKG_SCOS_BDMS.Ref_Cur;
BEGIN
  P_TABLENAME := 'tb_airport';
  P_FIELDNAME := 'airport_icao';  PKG_SCOS_BDMS.Pro_Bandingcombobox(
    P_TABLENAME => P_TABLENAME,
    P_FIELDNAME => P_FIELDNAME,
    P_DSPAGE => P_DSPAGE
  );
  for rec_next in P_DSPAGE loop
     DBMS_OUTPUT.PUT_LINE(rec_next);
   end loop;
END;--报错是for rec_next in P_DSPAGE loop中的P_DSPAGE 未定义。

解决方案 »

  1.   

    问题补充,上面是在PKG_SCOS_BDMS包里的一个存储过程,这个包里有定义游标类型Ref_Cur,下面是一个用来测试上面那个存储过程的块。
      

  2.   

    报错是for rec_next in P_DSPAGE loop中的P_DSPAGE 未定义。确定定义了就换个变量名看看,换了还不行就是没定义。一般的包需要编译,不是导进去就好使了。