精华内容
下载资源
问答
  • oracle的游标

    2017-11-10 13:34:04
    oracle的游标
                                   游标
    声明游标:declare cursor (声明游标) 游标名 is select语句
    打开游标:open 游标名
    读取数据:fetch 游标名 into 变量列表
    关闭游标:close 游标名   
    可以声明一个行类型变量: 变量名 游标名%rowtype 或表名%type
    取出一条记录
    declare 
    mz a.xm%type;--声明变量
    nv a.xb%type;--声明变量
    cursor cus1 is select xm,xb from a where bj='你好';--建立游标
    begin
    open cus1;--打开游标
    fetch cus1 into mz,nv;--读取数据
    dbms_output.put_line('姓名:'||mz||'性别:'||nv);--输出数据
    close cus1;--关闭游标
    end;


    取出多条记录
    declare 
    cursor cus1 is select xm,xb from a ;--声明游标
    cus2 cus1%rowtype;--声明变量
    begin
    if not cus1%isopen then --如果游标没有打开,就执行打开游标
    open cus1;
    end if;
    fetch cus1 into cus2;--取出第一条记录
    while cus1%found loop --循环条件为cus1不为空
    dbms_output.put_line('姓名:'||cus2.xm ||'   性别:'||cus2.xb);
    fetch cus1 into cus2;--取出下一条记录
    end loop;
    dbms_output.put_line('总行数:'||cus1%rowcount);--输出总行数
    close cus1;
    end;


    使用bulk collect 和for 语句的游标, fetch bulk collect into批量提取数据
    前面都是一样的循环不一样
    loop
    fetch cus1 bulk collect into cus2 limit 3;--批量取出3条记录
    for i in 1..cus2.count loop;
    dbms_output.put_line('输出数据:'||cus2(i).xm);
    end loop;
    exit when cus1%notfound;--当没有数据就退出
    end loop;


    for  loop 语句 没循环一次,游标会自动下移取出下一行数据,不用读取数据。也不用打开游标,也不用关闭游标,但他不能记录总行数
    cus_count integer:=0;--定义一个变量,用来存储总行数
    for cus2 in cus1 loop;--自动下移,指向下一条记录
    dbms_output.put_line('输出数据:'||cus2(i).xm);
    cus_count=cus_count+1;
    end loop;
    dbms_output.put_line('输出总行数'||cus_count)


    为游标传递参数 (在游标名后面加一个参数)如下
    declare 
    cursor(cs integer)cus1 is select xm,xb from a ;--声明游标给了一个参数


    显式游标的属性
    %isopen : 判断游标是否打开,打开为真,否则为假
    %found: 判断游标最近一次fetch是否取到数据,若是为真
    %notfound: 与%found相反
    %rowcount:判断游标打开以来,用fetch命令获得的总行数


    强类型动态游标
    声明动态游标:type 游标名 is ref cursor  return 记录类型
    打开游标: open 游标变量 for  select语句
    如 declare
    type yb1 is cursor return 表名%rowtype
    yb2 yb1;--定义游标变量
    c_count number;



    展开全文
  • Oracle的游标

    2017-08-08 21:20:24
    Oracle的游标
    select * from emp;
    
    begin
      for i in(select * from emp) loop
    
      end loop;
    end;
    
    --0隐式游标
    --1显示游标
          普通游标(静态游标)
          引用游标(动态游标)
          带有参数游标
    
    --声明一些变量,用来保存记录的列值
    --声明游标,并指定查询
    --打开游标
    --一次从游标中获取一个记录。
    --关闭游标
    
    --普通游标
    declare rowObj emp%rowtype;--声明一些变量,用来保存记录的列值
            cursor cur is select * from emp;--声明游标,并指定查询
    begin
      open cur;--打开游标
           loop
             fetch cur into rowObj;--一次从游标中获取一个记录。
             --可以使用游标变量 notfound表示读到末尾
             exit when cur%notfound; 
             dbms_output.put_line(rowObj.ename);
           end loop;
      close cur;--关闭游标
    end;
    
    --引用游标
    declare rowObj emp%rowtype;--声明一些变量,用来保存记录的列值
            cur sys_refcursor;--声明游标,并指定查询
    begin
      if(not cur%isopen) then
       dbms_output.put_line('游标未打开');
      end if;
      open cur for 'select * from emp';--打开游标
    -- or  open cur for select * from emp;--打开游标
           loop
             fetch cur into rowObj;--一次从游标中获取一个记录。
             --可以使用游标变量 notfound表示读到末尾
             exit when cur%notfound; 
             dbms_output.put_line(rowObj.ename);
           end loop;
      close cur;--关闭游标
    end;
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    展开全文
  • ORACLE 的游标

    2017-03-02 17:08:00
    Oracle数据库存储过程进行循环时,有两种常用方式 1、静态游标:显示游标 --A、简单显示游标 declare cursor cursor_emp is select * from emp;--声明一个游标 v_emp_record emp%rowtype; begin --...

    Oracle数据库的存储过程进行循环时,有两种常用的方式

    1、静态游标:显示游标

    --A、简单显示游标

    declare

      cursor cursor_emp is select * from emp;--声明一个游标

      v_emp_record emp%rowtype;

    begin

      --打开游标

      open cursor_emp;

      loop

        --提取行到变量

        fetch cursor_emp into v_emp_record;

        --判断是否有数据

        exit when cursor_emp%notfound;

        --显示数据

        dbms_output.put_line('员工编号:'||v_emp_record.empno||',姓名:'||v_emp_record.ename);

      end loop;

      --关闭游标

     

    --B、基于游标定义记录变量

    declare

      cursor cursor_emp is select * from emp;--声明一个游标

      v_emp_record emp%rowtype;

    begin

      --打开游标:如果没有打开

      if not cursor_emp%isopen then

         open cursor_emp;

      end if;

      loop

        --提取行到变量

        fetch cursor_emp into v_emp_record;

        --判断是否有数据

        exit when cursor_emp%notfound;

        --显示数据

        dbms_output.put_line('员工编号:'||v_emp_record.empno||',姓名:'||v_emp_record.ename);

      end loop;

      --关闭游标

      close cursor_emp;

    end;

     

    --C、带参数显式游标

    declare

      cursor cursor_emp(no number) is select * from emp where deptno=no;--声明一个带参数的显示游标

      v_emp_record emp%rowtype;

    begin

      --打开游标:如果没有打开

      if not cursor_emp%isopen then

         open cursor_emp(10);

      end if;

      loop

        --提取行到变量

        fetch cursor_emp into v_emp_record;

        --判断是否有数据

        exit when cursor_emp%notfound;

        --显示数据

        dbms_output.put_line('员工编号:'||v_emp_record.empno||',姓名:'||v_emp_record.ename);

      end loop;

      --关闭游标

      close cursor_emp;

    end;

     

    --D、循环游标

    declare

      cursor cursor_emp is select * from emp;

    begin

      --for循环

      for i in cursor_emp loop

        dbms_output.put_line('员工编号:'||i.empno||',姓名:'||i.ename);

      end loop;

    end;

     

    --for循环

    declare

      --cursor cursor_emp is select * from emp;

    begin

      --for循环:动态游标

      for i in (select * from emp) loop

        dbms_output.put_line('员工编号:' || i.empno || ',姓名:' || i.ename);

      end loop;

    end;

     

    转载于:https://www.cnblogs.com/lijm/p/6491554.html

    展开全文
  • Oracle 的游标

    2013-11-29 18:14:54
    游标是SQL一个内存工作区,由系统或用户以变量形式定义。游标的作用就是用于临时存储从数据库中提取数据块。在某些情况下,需要把数据从存放在磁盘表中调到计算机内存中进行处理,最后将处理结果显示出来或...

    概念 
    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。 

    类型
      Cursor类型包含三种: 隐式Cursor,显式Cursor和Ref Cursor(动态Cursor)。

    一、隐式游标

    1).对于Select …INTO…语句,一次只能从数据库中获取到一条数据,对于这种类型的DML Sql语句,就是隐式Cursor。例如:Select /Update / Insert/Delete操作。 
    2)作用:可以通过隐式Cusor的属性来了解操作的状态和结果,从而达到流程的控制。Cursor的属性包含:
    SQL%ROWCOUNT 整型 代表DML语句成功执行的数据行数 
    SQL%FOUND  布尔型  值为TRUE代表插入、删除、更新或单行查询操作成功 
    SQL%NOTFOUND 布尔型 与SQL%FOUND属性返回值相反 
    SQL%ISOPEN 布尔型 DML执行过程中为真,结束后为假

     

    create or replace procedure jc_test2(in_sex in abc.sex%TYPE) is

       str     varchar2(3000);
       str2    varchar2(3000);
      
    begin

       -- 隐形游标
       update abc a set a.tname='New Name' where a.id = 1;
      
       if SQL%Found then
         dbms_output.put_line('update success');
       else
         dbms_output.put_line('update fail');
       end if;
     
    end jc_test2;

    二、显式Cursor:
    (1) 对于从数据库中提取多行数据,就需要使用显式Cursor。显式Cursor的属性包含: 
    游标的属性   返回值类型   意    义  
    %ROWCOUNT   整型  获得FETCH语句返回的数据行数  
    %FOUND  布尔型 最近的FETCH语句返回一行数据则为真,否则为假  
    %NOTFOUND   布尔型 与%FOUND属性返回值相反  
    %ISOPEN 布尔型 游标已经打开时值为真,否则为假  

    (2) 对于显式游标的运用分为四个步骤:
     定义游标---Cursor  [Cursor Name]  IS; 
     打开游标---Open  [Cursor Name];
     操作数据---Fetch  [Cursor name] 
     关闭游标---Close [Cursor Name],这个Step绝对不可以遗漏。
    (3)以下是常见显式Cursor用法。

          -- 显性游标
       -- 打开游标

       // declare

       cursor mycursor2 is 
       select * from abc;
       abcInfo mycursor2%rowtype;

      //代码块
       open mycursor2;
       loop 
           -- 遍历游标
         fetch mycursor2 into abcInfo;
         exit when mycursor2%notfound;
         dbms_output.put_line(abcInfo.Id||'  '||abcInfo.Tname);  
       end loop;
       
       -- 关闭游标
       if mycursor2%isopen then
          close mycursor2;
       end if;

    三、动态游标(Refer Cursor)

       1) 与隐式Cursor,显式Cursor的区别:Ref Cursor是可以通过在运行期间传递参数来获取数据结果集。而另外两种Cursor,是静态的,在编译期间就决定数据结果集。
    2) Ref cursor的使用:
     Type [Cursor type name] is ref cursor
     Define 动态的Sql语句 
     Open cursor
     操作数据---Fetch  [Cursor name]
     Close Cursor 

         -- 动态游标

       // 定义

       type dynamic_cursor_type is ref cursor;
       dynamic_cursor dynamic_cursor_type;
       dy_abc_info    abc%rowtype;

      // 代码块

       open dynamic_cursor for select * from abc;
       loop 
         fetch dynamic_cursor into dy_abc_info;
         exit when dynamic_cursor%notfound;
         dbms_output.put_line('---- '||dy_abc_info.Id||' '||dy_abc_info.Tname);
       end loop;
       -- 关闭游标
       if dynamic_cursor%isopen then
          close dynamic_cursor;
       end if;
       

     附加  sys_refcursor是oracle9i以后系统定义的一个refcursor,主要用在过程中返回结果集,无需 对其关闭

          CREATE OR REPLACE PROCEDURE SP_OTHERS_REPORT_21(afacility_id in integer,
                                                    dateStart    in Date,
                                                    o_cur        OUT SYS_REFCURSOR,
                                                    o_cur2       OUT SYS_REFCURSOR,
                                                    o_cur3       OUT SYS_REFCURSOR) aS

          .................

    展开全文
  • 了解 Oracle 的游标

    2019-07-05 11:15:24
    了解 Oracle 的游标 一,概念: 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。 二, 作用: 用于定位结果集的行和遍历结果集 三, 使用: ...
  • Oracle的游标介绍

    2015-02-08 22:44:06
    Oracle的游标介绍
  • 浅谈oracle的游标

    2017-10-26 21:05:33
    oracle的游标的概述和举例
  • oracle的游标定义与使用 /* * 游标本质上就是一个result结果集,用于临时存储从DB中提取出来的数据块; */ /* *游标的分类: */ /* 1 显示游标; 由用户定义,需要的操作:定义游标、打开游标、提取数据、关闭游标...
  • Oracle的游标双机容错

    2009-06-01 14:07:15
    大家看了一定很有收获呵呵。关于Oracle的游标问题解释和简单介绍定义
  • /*游标的简单学习*/一.概念:1.游标游标是用于在存储过程中迭代SELECT查询出数据。2.什么是游标?①游标(cursor)是系统为用户开设一个数据缓冲区,存放SQL语句执行结果。每个游标区都有一个名字。用户可以用...
  • 原标题:好程序员Java教程分享oracle的游标类型好程序员Java教程分享oracle的游标类型数据库中的游标(以下内容以Oracle为例):游标是sql的一个内存工作区,由系统或用户以变量的形式定义游标的作用就是用于临时...
  • Oracle的游标学习

    2019-03-18 02:37:25
    NULL 博文链接:https://longhuang.iteye.com/blog/694275
  • Oracle的游标:是内存中的一块区域,存放sql 的查询结果cursor隐式游标:无约束的集合--可以存放任意表的结果使用单条结构化查询语言,4个属性如下:%rowcount记录的行数,整数.%found:能得到记录true.%notfound:...
  • Oracle的游标使用方法 三种循环 2017年03月31日 23:24:07 嶶風 阅读数:8664 标签: oracle 更多 个人分类: oracle 版权声明:本文为博主原创文章,未经博主允许不得转载。 ...
  • Oracle的游标-CURSOR

    2010-07-02 16:02:56
    oracle的游标使用:PL/SQL包含显式游标和隐式游标两种类型,其中隐式游标用于处理select into和DML语句,而显式游标则专门用于处理select语句返回的多行数据。使用显式游标包括定义游标、打开游标、提取游标和关闭...
  • oracle的游标cursor

    2018-04-04 17:56:00
    6,如何使用显示游标,?如何遍历循环游标? ①使用显示游标 ⑴声明游标:划分存储区域,注意此时并没有执行Select 语句。 CURSOR 游标名( 参数 列表) [返回值类型] IS Select 语句; ⑵打开游标:执行Select 语句,...
  • Oracle的游标和触发器

    2019-07-14 17:14:35
    1.什么是游标 游标(光标): 是用来操作查询结果集,相当于是JDBC中ResultSet 语法: cursor 游标名[(参数名 参数类型)] is 查询结果集 开发步骤: 1. 声明游标 2. 打开游标 open 游标名 3. 从游标中取数据 fetch ...
  • 1. oracle游标1) 游标简介使用游标,我们可以对具体操作数据,比如查询结果,对行,列数据进行更加细致处理。以及对其他DML操作进行判断等操作。2) 显示游标SQL> set serverout on;declare cursor cu_emp is ...
  • oracle的游标笔记

    2016-10-12 20:15:07
    游标是一条SQL语句执行之后结果状态信息 1.1 隐式游标 当执行DML语句时,会自动创建隐式游标,包含 %FOUND: 影响大于0条数据为true , %NOTFOUND:影响0条数据为true , %ROWCOUNT:影响数据条数 , ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,860
精华内容 2,744
关键字:

oracle的游标