oracle的显式游标

declare
  cursor user_cur
  is select * 
  from my_user;
  user_row my_user%rowtype;
  begin
      open user_cur;
      loop
      fetch user_cur into user_row;
      exit when user_cur%notfound;
      dbms_output.put_line(user_row.user_id||'----'||user_row.name);
      end loop;
      close user_cur;
  end;

declare
  cursor user_cur
  is select * 
  from my_user;
  row_user my_user%rowtype;
  begin
      open user_cur;
      loop
        fetch user_cur into row_user;
        exit when user_cur%notfound;
        dbms_output.put_line(row_user.user_id||'----'||row_user.name||'----'||row_user.age);
      end loop;
      close user_cur;
end;
declare
  cursor row_user
  is select * 
  from my_user;
  type my_user_tab is table of my_user%rowtype;
   /*
   定义和表my_user行对象一致的集合类型cur_row_user,
  用于存放批量得到的数据
  */
  cur_row_user my_user_tab;   
  
  begin
      open row_user;
      loop
        /*从结果集中提取数据,每次提取两行*/
        fetch row_user bulk collect into cur_row_user limit 2;
        /*遍历集合cur_row_user中的数据*/
        for i in 1..cur_row_user.count loop
            dbms_output.put_line(cur_row_user(i).user_id||'----'||cur_row_user(i).name||'----'||cur_row_user(i).age);
        end loop;
        exit when row_user%notfound;
       
      end loop;
      close row_user;
  end;
declare
  cursor user_cur
  is select * 
  from my_user;
  type my_user_tab is table of my_user%rowtype;
   /*
   定义和表my_user行对象一致的集合类型cur_user_cur,
  用于存放批量得到的数据
  */
  cur_user_cur my_user_tab;   
  
  begin
      open user_cur;
      loop
        /*从结果集中提取数据,每次提取两行*/
        fetch user_cur bulk collect into cur_user_cur limit 2;
        /*遍历集合cur_user_cur中的数据*/
        for i in 1..cur_user_cur.count loop
            dbms_output.put_line(cur_user_cur(i).user_id||'----'||cur_user_cur(i).name||'----'||cur_user_cur(i).age);
        end loop;
        exit when user_cur%notfound;
       
      end loop;
      close user_cur;
  end;
declare
  cursor user_cur
  is select * 
  from my_user;
  begin
     
        for cdr in user_cur
          loop
            dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);
          end loop;
  end;
  /*cursor for loop 不需要特别的申明变量,它可以提取出行对象类型数据*/
declare
  cursor user_cur
  is select * 
  from my_user;
  cdr my_user%rowtype;
  begin
       if user_cur%isopen then
         fetch user_cur into cdr;
         dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);
       else dbms_output.put_line('游标没有打开');
       end if;
  end;
declare
  cursor user_cur
  is select * 
  from my_user;
  cdr my_user%rowtype;
  begin
    open user_cur;
       if user_cur%isopen then
         loop
           fetch user_cur into cdr;
           exit when user_cur%notfound;
           dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);
          end loop;  
     else dbms_output.put_line('游标没有打开');
       end if;
  end;
declare
  cursor user_cur
  is select * 
  from my_user;
  cdr my_user%rowtype;
  begin
    open user_cur;
     loop
       fetch user_cur into cdr;
             if user_cur%found then
                dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);
             else 
               dbms_output.put_line('游标没有打开');
               exit;
             end if;
     end loop;  
  end;
declare
  /*这里的取值写在declare和begin中都可以*/
  v_user_id my_user.user_id%type:='&v_user_id';
  /*这里的v_user_id的类型写number和my_user.user_id%type都可以*/
  cursor c_my_user(v_user_id my_user.user_id%type)
  is select * 
  from my_user
  where user_id=v_user_id;
  cdr my_user%rowtype;
  
  begin
   
    open c_my_user(v_user_id);
     loop
       fetch c_my_user into cdr;
             if c_my_user%found then
                dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);
             else 
               dbms_output.put_line('游标没有打开');
               exit;
             end if;
     end loop;  
  end;
时间: 2024-10-25 14:47:25

oracle的显式游标的相关文章

oracle 游标使用(显式游标)

1. Set Serveroutput on; declare Cursor tem_cursor is select * from xuesheng xs; v_row tem_cursor%rowtype; begin open tem_cursor; loop fetch tem_cursor into v_row; exit when tem_cursor%NOTFOUND; dbms_output.put_line(v_row.xing_ming); end loop; close t

oracle的隐式游标

游标的概念:     游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库.这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率. 游标有两种类型:显式游标和隐式游标.在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和DML操作,系统都会使用一个隐式游标.但是如果要

Oracle-35-隐式游标&显式游标

一.游标作用(或定义) 1.PL/SQL提供游标机制处理多行记录结果集: 2.游标类似于指针,使应用程序一次可以处理其中的一行记录,比如将游标放入一个for循环中,每循环一次就处理一行记录,那么循环n次就可以处理n行记录: 3.Oracle中,可以分为显式游标和隐式游标两种,比如select*fromstudent就是用隐式游标进行遍历student表,然后将查询结果展示: 4.在平常在进行SELECT查询.DML操作Oracle都会自动创建声明"隐式游标"来处理结果数据: 6.如果需

【PL/SQL练习】显式游标

cursor --------需要用户先定义,在select时,可以用于处理多行记录 1.declare  声明一个游标 2.open cursor (隐式游标自动open) 3.fetch cursor 读取记录到变量(在select时,可以通过循环的方式读取多行记录) 4.判断游标是否为空(到达最后一行记录) 5.close cusor 关闭游标 %isopen  判断游标是否open %found    判断游标是否为非空 %notfound  判断游标是否为空 %rowcount   在

显式游标

简介 显示游标使用的是SELECT叙述,被声明于任何一个区块的声明段落中,开发者可以控制几乎所有与游标有关的操作.显示游标对游标的处理提供了其他类似的游标无法做到的控制.他们要使用一次会传回多余一笔记录的SELECT叙述.虽然他们提供了比隐式游标更多的控制,但也需要额外的步骤来操作.使用显示游标,需要进行四个步骤: 1.声明 2.开启 3.从CURSOR中取数据 4.关闭 开启: 游标会在区块的执行或者例外段落中被开启.OPEN命令,准备好游标以供使用.游标中一次只可以有一笔作用中的记录.在开启

隐式游标和显式游标

隐式游标的例子

Oracle PLSQL Demo - 08.定义显式游标[Define CURSOR, Open, Fetch, Close CURSOR]

declare v_empno scott.emp.empno%type; v_sal scott.emp.sal%type; cursor cur_emp is select t.empno, t.sal from scott.emp t; begin open cur_emp; loop fetch cur_emp into v_empno, v_sal; exit when cur_emp%notfound; dbms_output.put_line(v_empno || ' ' || v

oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理和自定义异常

游标的概念:    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁 盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库.这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率.游标有两种类型:显式游标和隐式游标.在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种 形式的查询和DML操作,系统都会使用一个隐式游标.但是如果要

Oracle学习笔记十一 游标

游标的简介 游标的概念 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作,然后将操作结果写回数据表中. 逐行处理查询结果,以编程的方式访问数据. 游标的定义 游标作为一种数据类型,首先必须进行定义,其语法如下: cursor 游标名 is select 语句; cursor是定义游标的关键词,select是建立游标的数据表查询命令. declare cursor c1