`
chengyue2007
  • 浏览: 1468186 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Oracle中游标的使用

阅读更多

1;字符串变量例子2

给你一个完整的例子:  
  DECLARE  
        TYPE   EmpCurTyp   IS   REF   CURSOR;              --定义游标类型typeof
        emp_cv       EmpCurTyp;  
        emp_rec     emp%ROWTYPE;                            --查找一行的时候用这个  emp 这个就是表的名字

--如果要定义某个列的类型的时候,需要直接定义这种类型.如: v_tab   t_clear.wlbmc%TYPE; 表示t_clear.wlbmc 表中 的某个字段的类型

 

        sql_stmt   VARCHAR2(200);  
        my_job       VARCHAR2(15)   :=   'CLERK';          --这个不知道是 
  BEGIN  
        sql_stmt   :=   'SELECT   *   FROM   emp   WHERE   job   =   :j';    --最好是使用这种方法的sql语句重要
        OPEN   emp_cv   FOR   sql_stmt   USING   my_job;   -- 打开游标      
        LOOP  
              FETCH   emp_cv   INTO   emp_rec;  
              EXIT   WHEN   emp_cv%NOTFOUND;               --如果游标到了文件尾部
              --   process   record                                          --对游标中的数据进行炒作
        END   LOOP;  
        CLOSE   emp_cv;                                                      ---关闭游标
  END;   

 

 

2下面的是我们实际应用中

create or replace function f_get_proposer(proposerids in varchar2)
  return varchar2
  is
  TYPE   EmpCurTyp   IS   REF   CURSOR;
 
  proposer t_ro_proposer.proposer%TYPE;
  proposers varchar2(500):='';
  uproposerids varchar2(500):='';
  sql_stmt   VARCHAR2(200); 
  space varchar2(2):='';
  --CURSOR   c_dept   IS  select  p.proposer   from t_ro_proposer p where p.proposerid in('||proposerids||'); 
  c_dept EmpCurTyp;
  BEGIN
  if length(proposerids)=0 or nvl(proposerids,'~')='~' then
         return (space);
     else
         uproposerids:=trim(proposerids);
     end if;
 
    --replace('',',',''',''');
    --replace(proposerids,',',''',''')
   sql_stmt:='select  p.proposer   from t_ro_proposer p where p.proposerid in('||proposerids||')';
  
    OPEN   c_dept   FOR   sql_stmt   ; 
    LOOP 
              FETCH   c_dept   INTO   proposer; 
              EXIT   WHEN   c_dept%NOTFOUND; 
              proposers:=proposers||proposer||',';
    END   LOOP; 

   CLOSE   c_dept ; 
 
 
-- return (proposer);
 return (proposers);
  END;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics