【PL/SQL练习】显式游标

cursor --------需要用户先定义,在select时,可以用于处理多行记录

1、declare  声明一个游标

2、open cursor (隐式游标自动open)

3、fetch cursor 读取记录到变量(在select时,可以通过循环的方式读取多行记录)

4、判断游标是否为空(到达最后一行记录)

5、close cusor 关闭游标

%isopen  判断游标是否open %found    判断游标是否为非空 %notfound  判断游标是否为空 %rowcount   在游标中处理的数据行数

①案例:通过显式游标select读取多行数据

SQL> declare
  2   cursor cur_emp is
  3    select * from emp where deptno=&no;
  4
  5   emp_rec   emp%rowtype;
  6
  7   begin
  8     if not cur_emp%isopen then
  9         open cur_emp;
 10     end if;
 11
 12     loop
 13         fetch  cur_emp into emp_rec ;
 14     exit when cur_emp%notfound ;
 15
 16       dbms_output.put_line( emp_rec.ename ||‘ , ‘||emp_rec.sal||‘ , ‘|| emp_rec.deptno );
 17     end loop;
 18   close cur_emp;
 19
 20  end;

②通过for循环读取游标数据:

SQL> declare
  2      cursor cur_emp is
  3     select * from emp where deptno=&no;
  4
  5    begin
  6        for emp_rec in cur_emp loop
  7         dbms_output.put_line( emp_rec.ename ||‘ , ‘||emp_rec.sal||‘ , ‘|| emp_rec.deptno );
  8        end loop;
  9
 10    end;

③带有参数的游标:通过参数传递给游标

SQL> declare
  2
  3     cursor  emp_cur (v_deptno number) is
  4       select * from emp where deptno=v_deptno;
  5    emp_rec   emp%rowtype;
  6
  7    begin
  8      if not emp_cur%isopen then
  9          open emp_cur(30);
 10      end if;
 11      loop
 12          fetch emp_cur into emp_rec ;
 13          exit when emp_cur%notfound;
 14          dbms_output.put_line( emp_rec.ename ||‘ , ‘||emp_rec.sal||‘ , ‘|| emp_rec.deptno );
 15      end loop;
 16      end;
SQL>  declare
  2
  3     cursor  emp_cur (v_deptno number) is
  4       select * from emp where deptno=v_deptno;
  5    emp_rec   emp%rowtype;
  6
  7    begin
  8      if not emp_cur%isopen then
  9          open emp_cur(20);
 10      end if;
 11      loop
 12          fetch emp_cur into emp_rec ;
 13          exit when emp_cur%notfound;
 14          dbms_output.put_line( emp_rec.ename ||‘ , ‘||emp_rec.sal||‘ , ‘|| emp_rec.deptno );
 15      end loop;
 16      end;

④在for循环中嵌套游标(游标不需要declare)

SQL> begin
  2          for emp_rec in (select * from emp where deptno=&no) loop
  3              dbms_output.put_line( emp_rec.ename ||‘ , ‘||emp_rec.sal||‘ , ‘|| emp_rec.deptno );
  4          end loop;
  5
  6  end;
时间: 2024-11-09 00:34:31

【PL/SQL练习】显式游标的相关文章

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

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

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(六)PL/SQL、循环和游标

-- View:视图(虚表),不占用物理空间! --  如果没有权限 -- 使用dba登录  grant  create any  view to 用户名; create or replace  view  teacher_viewas select tname,sal from teacher --  查询视图select * from teacher_view ************=======PL/SQL=======************* --PL/SQL (Procedural

隐式游标和显式游标

隐式游标的例子

显式游标

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

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||'----'||u

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

PL/SQL 编程(二)游标、存储过程、函数

游标--数据的缓存区 游标:类似集合,可以让用户像操作数组一样操作查询出来的数据集,实质上,它提供了一种从集合性质的结果中提取单条记录的手段. 可以将游标形象的看成一个变动的光标,他实质上是一个指针,在一段Oracle存放数据查询结果集或者数据操作结果集的内存中,这个指针可以指向结果集任何一条记录. 游标分静态游标和REF游标两类,静态游标包含显式游标和隐式游标. 显式游标: 在使用之前必须有明确的游标声明和定义,这样的游标定义会关联数据查询语句,通常会返回一行或多行.打开游标后,用户可以利用游

[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)

原文:[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到) 继上两篇:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) 得到了大家的强力支持,感谢.接下来再下猛药,介绍下一篇,大家一定要支持与推荐呀~!我也才有动力写后面的. 本篇主要内容如下: 4.1 游标概念 4.1.1 处理显式游标 4.1.2 处理