Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104559291
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-30 20:53:26

/*
          **************************************
          *          Oracle 游标示例                               *
          **************************************
*/
--(1)声名游标 用一个查询定义游标的行和列
DECLARE
CURSOR nextRecodeRow IS
       SELECT * FROM JHJ_DZ_TEST_RESULT
              WHERE JHJX=41
                    ORDER BY YWMC;    
      
--用%ROWTYPE属性声名的记录变量自动拥有对应于所引用镖的字段的字段名
RecodeRow_DZ JHJ_DZ_TEST_RESULT%ROWTYPE;
--声名带参数的游标
CURSOR nextRecodeRow_with_var (JHJDM INTEGER) IS
       SELECT * FROM JHJ_XYW_TEST_RESULT
                WHERE JHJX=JHJDM
                      ORDER BY YWMC,JX,XH; 
                     
RecodeRow_XYW JHJ_XYW_TEST_RESULT%ROWTYPE;                   
BEGIN
     DBMS_OUTPUT.put_line('----------以下显示普通游标记录-----------');
    
     --(2) 打开游标
     OPEN nextRecodeRow;
     --(3) 用 FETCH ... INTO ... 从游标中取出行
     FETCH nextRecodeRow INTO RecodeRow_DZ;
     WHILE nextRecodeRow%FOUND LOOP
           DBMS_OUTPUT.put_line(RecodeRow_DZ.ywmc||' == '||RecodeRow_DZ.jhjzl);
           FETCH nextRecodeRow INTO RecodeRow_DZ;
     END LOOP;
     --(4) 用 CLOSE 关闭游标
     CLOSE nextRecodeRow;
     DBMS_OUTPUT.put_line('----------普通游标记录显示完毕-----------');
    
    
     DBMS_OUTPUT.put_line('**********以下显示游标FOR记录************');
    
     --游标FOR循环自动声名一个能够接受游标中的行,
     --打开游标,从游标中取出行以及在游标中的最后一行取出后关闭游标的变量或记录
     FOR RecodeRow_DZ IN nextRecodeRow LOOP
         DBMS_OUTPUT.put_line(RecodeRow_DZ.jhjx||' == '||RecodeRow_DZ.jx);
     END LOOP;
    
     DBMS_OUTPUT.put_line('**********游标FOR记录显示完毕************');
    
    
     DBMS_OUTPUT.put_line('==========以下显示带参游标记录===========');
    
     --通过游标FOR调用带参数的游标
     FOR RecodeRow_XYW IN nextRecodeRow_with_var(51) LOOP
         DBMS_OUTPUT.put_line(RecodeRow_XYW.jx||' ** '||RecodeRow_XYW.xh);
     END LOOP; 
      
     DBMS_OUTPUT.put_line('==========带参游标记录显示完毕===========');

END;
 
 
阅读(421) | 评论(0) | 转发(0) |
0

上一篇: oracle笔记动态SQL

下一篇:Oracle Environment

给主人留下些什么吧!~~