zoukankan      html  css  js  c++  java
  • 六.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查看执行结果:

        

  • 相关阅读:
    ApplicationContext之getBean方法详解
    Windows10终端优化方案:Ubuntu子系统+cmder+oh-my-zsh
    向 Windows 高级用户进阶,这 10 款效率工具帮你开路 | 新手问号
    Ditto —— windows 剪贴板增强小工具(复制粘贴多条记录)
    Service Mesh服务网格:是什么和为什么
    正确理解Spring事务和数据库事务和锁
    Spring中@Transactional事务回滚(含实例详细讲解,附源码)
    五分钟搞清楚MySQL事务隔离级别
    事务并发的问题场景图解
    Spring的事务管理和数据库事务相关知识
  • 原文地址:https://www.cnblogs.com/xushirong/p/7247325.html
Copyright © 2011-2022 走看看