如果仅仅是想实现你要的功能,完全可以
 Procedure test(v_rvcd in varchar2,v_wfrcd in varchar2,CUR_OUT OUT cur_OUT)
          is             begin
          
          open CUR_OUT for
          select wfrcd ,wfrnm  from Wq_Wfrinf_b where   rvcd=v_rvcd and wfrcd like v_wfrcd 
        end;

解决方案 »

  1.   

    Procedure test(v_rvcd in varchar2,v_wfrcd in varchar2,CUR_OUT OUT cur_OUT)
              is
              v_wfrcd_con varchar2(200);
     
              v_sql varchar2(8000);
              CURSOR c_wfrcd is      
              
              select wfrcd  from Wq_Wfrinf_b where  rvcd=v_rvcd and wfrcd like v_wfrcd ;           begin
             v_sql='';
             open c_wfrcd;
             loop
             fetch c_wfrcd into v_wfrcd_con;         
               if v_sql<>'' then
                v_sql=v_sql||' union select  wfrnm  from Wq_Wfrinf_b where wfrcd='''||v_wfrcd_con||''' '     
                 else 
                   v_sql:='select  wfrnm  from Wq_Wfrinf_b where wfrcd='''||v_wfrcd_con||''' ';
                end if;
      初始化v_sql 为空,运行是判断:如果v_SQL 不为空,那么将SQL语句用UNION连接起来
            exit when c_wfrcd%notfound;
             
             end loop;
             close c_wfrcd;
              open CUR_OUT for
              v_sql;
            end;
      

  2.   

    关注,如果情况不太复杂,应该可以用连接查询select  wfrnm  from Wq_Wfrinf_b where wfrcd in (
      select wfrcd  from Wq_Wfrinf_b where  rvcd=v_rvcd and wfrcd like v_wfrcd 
    );或者用内连接
    select b.wfrnm   from Wq_Wfrinf_b  a
    inner join from Wq_Wfrinf_b on b.wfrcd = a.wfrcd 
    where  a.rvcd=v_rvcd and a.wfrcd like v_wfrcd 
    ....