六.Oracle中游标的使用

一。游标的使用:

  1.游标的概念

--游表的概念
  --游标是Oracle系统在内存中开发的一个工作区,在其中存放select查询语句返回的查询集;
  --在游标所定义的工作区中,存放着一个指针(pointer),在初始状态它指向查询的首记录,当指针放置在某行后,即对该行数据进行操作;
  --游标分为两类:
                --隐式游标
                --显示游标:
                          --普通游标(静态游标)
                          --引用游标(动态游标)
                          --带有参数
  --使用游标的5个步骤:
        --声明一个变量,用来保存记录的列值;
        --声明游标,并指定查询
        --打开游标
        --一次从游标中获取一个记录。
        --关闭游标

  --游标的分类:
      --游标分为两大类:显示游标
               隐式游标
           其中显示游标又分为三种:
                1.普通游标
                2.动态游标
                3.带有参数的游标

  2.普通游标的定义及执行结果

  --普通游标:
      --声明一些变量,用来保存记录的列值
      declare empTile emp%rowtype;
      --声明游标,并指定查询
      cursor cur is select * from emp where sal>2000;
      begin
      --打开游标
      open cur;
      --一次从游标中获取一个记录。
      loop
      fetch cur into empTile;
      exit when cur%notfound;
      s(empTile.ename || empTile.sal);
      end loop;
      --关闭游标
      close cur;
      end;

     执行结果如下:

    

  3.动态游标的使用

    

   --动态游标
   declare myjob varchar2(20):='&请输入你的职位';
           empTemp emp%rowtype;   --1.声明一些变量,用来保存行的值
           cur sys_refcursor;     --2.声明游标
           mysql varchar2(50);
           
   begin
          mysql:='select * from emp';
          if(myjob is not null) then
               mysql:=mysql || ' where job=''' || myjob || '''';  --此处的‘‘’ 表示两个转译字符,两个单引转译一个单引
          end if;
          s(mysql);
          open cur for mysql;  --打开游标
          loop
             fetch cur into empTemp;  --4.抓取一行数据到记录类型,只有fetch 之后,%notfound才被赋予值
             exit when cur%notfound;
             dbms_output.put_line(empTemp.ename || empTemp.sal);
             end loop;
          close cur;         --5.关闭游标
   end;

 

   输入要查询的工作职位:

  

    点击ok查看执行结果:

    

 

posted @ 2017-07-27 20:55  lszan  阅读(624)  评论(0编辑  收藏  举报