• 六.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查看执行结果:

        

  • 相关阅读:
    最好的我们
    外滩
    外滩
    Java EE (5) -- Java EE 6 JavaServer Faces Developer Certified Expert(1z0-896)
    列表list(序列)、元组tuple(序列)
    P1165 日志分析 洛谷
    T1365 浴火银河星际跳跃 codevs
    T1503 愚蠢的宠物 codevs
    P2820 局域网 洛谷
    T1992 聚会 codevs
  • 原文地址:https://www.cnblogs.com/xushirong/p/7247325.html
Copyright © 2020-2023  润新知