zoukankan      html  css  js  c++  java
  • Oracle游标的使用方法以及使用for循环实现游标的原理

    select * from tb_grade t for update
       --1普通游标(显示游标)
       declare
       --定义游标 用于查询表结构的数据集
       cursor grade_cursor is select cname from tb_grade;
       --定义行变量 可以是 游标%rowtype 也可以是 表%rowtype
       grade_row  grade_cursor%rowtype;
       begin
          --打开游标
          open grade_cursor;
          loop
              --通过游标抓取一行
              fetch grade_cursor into grade_row;
              --判断游标是否到了最后一行
              exit when grade_cursor%notfound;
              --逻辑语句应该在exit when之后
              syso(grade_row.cname);
          end loop;
          --关闭游标
          close grade_cursor;
       end;
       
       --2引用游标(动态游标)(显示游标)
       declare type dyncCursor is ref cursor;
       cursor_tmp dyncCursor;
       grade_row tb_grade%rowtype;
       begin
          --打开游标
          open cursor_tmp for select * from tb_grade;
          loop
              --通过游标抓取一行
              fetch cursor_tmp into grade_row;
              --判断游标是否到了最后一行
              exit when cursor_tmp%notfound;
              --逻辑语句应该在exit when之后
              syso(grade_row.cname);
          end loop;
          --关闭游标
          close cursor_tmp;
         
       end;
       
       
       --3带参数游标
       declare
       --定义游标 用于查询表结构的数据集
       cursor grade_cursor(id1 number) is select cname from tb_grade where cid=id1;
       --定义行变量 可以是 游标%rowtype 也可以是 表%rowtype
       grade_row  grade_cursor%rowtype;
       begin
          --打开游标
          open grade_cursor(4);
          loop
              --通过游标抓取一行
              fetch grade_cursor into grade_row;
              --判断游标是否到了最后一行
              exit when grade_cursor%notfound;
              --逻辑语句应该在exit when之后
              syso(grade_row.cname);
          end loop;
          --关闭游标
          close grade_cursor;
       end;
       
       --隐式游标 oracle负责帮程序 打开关闭抓取游标 常用的方式
       declare  
         cursor grade_cursor is select cname from tb_grade;
       begin
          for stu_tmp in grade_cursor loop
         syso(stu_tmp.cname);
       end loop;
         
       end;
       
       
       
       --普通for循环输出表记录行   作业
       /**
          List list=new ArrayList();
          int count=list.size();
          for(int v=0;v<count;v++){
             V v=list.get(v);
          }
       **/
       declare rowco number;
       rowdata tb_grade%rowtype;
       begin
          select count(rowid) into rowco from tb_grade;
          for(v in 1..rowco) loop
              select * into rowdata from tb_grade where rownum=v;
              syso(rowdata.cname);
          end loop;
       end;
  • 相关阅读:
    extgcd 扩展欧几里得算法模板
    51nod 1073约瑟夫环
    UVA 11806 Cheerleaders (容斥原理
    HDU 1863 畅通工程 (最小生成树
    并查集模板
    51NOD 1072 威佐夫游戏
    Java基于JAX-RD开发Restful接口
    tomcat的webapps下放置多个项目时会出现很多exception
    带滚动条的表格
    禁止apache显示目录索引的常见方法
  • 原文地址:https://www.cnblogs.com/t0404/p/10291065.html
Copyright © 2011-2022 走看看