我在package头声明了
TYPE cur IS ref CURSOR;在package的一个procedure中有如下代码db_Cur cur;
    
wStr := 'select * from ' || in_tablename;
open db_Cur for wStr;
LOOP
   FETCH db_Cur INTO Rec; --pls-00201
   EXIT WHEN db_Cur%notfound;
   //处理                
END LOOP;貌似对于db_Cur的定义错误,求达人问我解决问题
另收关于oracle调试资料一样给分

解决方案 »

  1.   

        
    wStr := 'select * from ''' || in_tablename ||'''';
      

  2.   

    --lz我用你的方法测试过,没有问题的,也许是你别的地方的错误
    CREATE OR REPLACE PACKAGE ll_test AS
    TYPE cur IS ref CURSOR;
    procedure ll_cur;
    END ll_test;CREATE OR REPLACE PACKAGE body ll_test ASprocedure ll_cur
    is
    db_Cur cur;
    wStr varchar2(200);
    in_tablename varchar2(200);
    rec b_brands%rowtype;
    begin
    in_tablename :=' b_brands ';   
    wStr := 'select * from ' || in_tablename;
    open db_Cur for wStr;
    LOOP
       FETCH db_Cur INTO rec; 
       EXIT WHEN db_Cur%notfound;
       dbms_output.put_line(rec.brand_id);             
    END LOOP;end;END ll_test;
      

  3.   

    db_Cur cur;改为
    db_Cur cur; 
    --注意;要用半角
      

  4.   

    不是分号的问题
    今天早上我已经自己解决了
    少了
    rec b_brands%rowtype;另外
    open db_Cur for wStr;
    LOOP
       FETCH db_Cur INTO Rec;
       EXIT WHEN db_Cur%notfound;
       //处理               
    END LOOP;
    这一段昨天慌乱中被我改成了
       open db_Cur for wStr;
       FOR Rec IN db_Cur LOOP;
       //处理               
       END LOOP;
    发现如下问题:
       动态sql不能用  FOR Rec IN db_Cur LOOP; 
                     ENDLOOP;
       这样的语句进行循环
       只能用 LOOP 
             FETCH db_Cur INTO Rec 
             ENDLOOP;
       进行循环还是要感谢楼上的几位兄弟,仗义啊
    昨天被这两个问题搞在一起很是狼狈,2个问题交替错,想当然的以为是一个问题
    谁能发一点关于编译分析的材料给我,一样给分,现在还不结贴。