用动态游标:
type myCurType is ref cursor;
L_cursor myCurType;
mySql string(200);
...
begin
 mySql:='select ...';
 open L_cursor for mySql;
...

解决方案 »

  1.   

    是我没有看清楚问题么?是你自己不清楚自己到底要干什么吧!
    定义显式游标的时候,其中涉及的数据库对象必须是oracle能识别的。
    而你需要传入参数,那么就使用动态游标。
      

  2.   

    是的,显示游标一定在定义部分已进行预编译,楼主只有用动态游标方法:
    以下是一个测试的错误:
    SQL> declare
      2    cursor t_sor(p_tv varchar2) is
      3    select * from p_tv;
      4  begin
      5    for v_sor in t_sor('tv') loop
      6    null;
      7    end loop;
      8  
      9  end;
     10  /declare
      cursor t_sor(p_tv varchar2) is
      select * from p_tv;
    begin
      for v_sor in t_sor('tv') loop
      null;
      end loop;end;ORA-06550: 第 3 行, 第 17 列: 
    PL/SQL: ORA-00942: 表或视图不存在
    ORA-06550: 第 3 行, 第 3 列: 
    PL/SQL: SQL Statement ignored
      

  3.   

    To:  jiezhi(風依舊)   就按你说的做,可结果不还是一样?  'select L_stdfield,match_code from user.tableName' 中要做到有两个变量,L_stdfield 已经是了,要把user.tableName 也用变量代替。 如:L_stdfield :=rdc_code;
       然后还有取出  L_cursor.rdc_code的值。
      

  4.   

    最重要问题还是在后边,L_cursor.rdc_code没问题,但要是写成L_cursor.L_stdfield 就取不出上述select 取出的第一列的值了。      
     这里 'user.tableName' 和参数 L_stdfield 是通过funciton(param1 in varchar2,param2 in varchar2) 传来的值。