+ -
当前位置:首页 → 问答吧 → Oracle 存储过程结果游标输出错误求高手指点

Oracle 存储过程结果游标输出错误求高手指点

时间:2011-12-23

来源:互联网

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 未定义。

作者: c07001   发布时间: 2011-12-23

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

作者: c07001   发布时间: 2011-12-23