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;

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

  1. 【Oracle】PL/SQL 显式游标、隐式游标、动态游标

    在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,Oracle会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...

  2. PL/SQL — 显式游标

    一.游标的相关概念及特性 1.定义 通过游标方式定位到结果集中某个特定的行,然后根据业务需求对该行进行相应特定的操作. 2.分类 显示游标: 用户自定义游标,用于处理select语句返回的多行数据. ...

  3. plsql 显式游标

    显式游标的处理过程包括: 声明游标,打开游标,检索游标,关闭游标. 声明游标 CURSOR c_cursor_name IS statement; 游标相当于一个查询结果集,将查询的结果放在游标里,方 ...

  4. PL/SQL学习笔记之游标

    一:游标 Oracle会创建一个上下文区域,用于处理SQL语句,其中包含需要处理的语句.处理结果等等. 游标指向这一上下文的区域. PL/SQL通过控制游标在上下文区域移动,来获取SQL语句的结果信息 ...

  5. PL/SQL学习笔记_02_游标

    在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现. 为了处理 SQL 语句, ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息,其中包括要处 ...

  6. ORACLE的显式游标与隐式游标

    1)查询返回单行记录时→隐式游标: 2)查询返回多行记录并逐行进行处理时→显式游标 显式游标例子: DECLARE CURSOR CUR_EMP IS SELECT * FROM EMP; ROW_E ...

  7. SQL Server显式事务与隐式事务

    事务是单个的工作单元.如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分.如果事务遇到错误且必须取消或回滚,则所有数据库修改均被清除. SQL Server中有一下几 ...

  8. 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. ...

  9. PL/SQL之--游标

    一.游标简介 在PL/SQL中执行SELECT.INSERT.DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),也称为缓冲区.游标是指向该区的一个指 ...

随机推荐

  1. WINDOWS黑客基础(6):查看文件里面的导入表

    int main(void) { HANDLE hFile = CreateFile("D:\\Shipyard.exe", GENERIC_READ, FILE_SHARE_RE ...

  2. 更改AD查询LDAP条目的1000限制

    解除LDAP导入时的AD条目查询限制 解除LDAP导入或读取AD用户数限制问题 更改AD查询LDAP条目的1000限制 来源:http://www.jiancool.com/article/55373 ...

  3. 95. Unique Binary Search Trees II

    Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1 ...

  4. (二)java特征

    java的核心是面向对象,与之相对的是面向过程的编程,在对整个java编程没有足够的理解和运用的情况下恐怕没办法很好的理解这两个概念.     在我的初步理解中,写一个程序就例如做一件事情,面向过程的 ...

  5. Keepalived高可用软件的安装与配置

    监听和替换多台服务器之间的来回切换 一.安装tar zxvf keepalived-1.1.15.tar.gzcd keepalived-1.1.15./configure --prefix=/usr ...

  6. 原生js 用正则实现removeclass hasclass getsclass addclass .

    function getByClass(oParent,sClass){ if(oParent.getElementsByClassName){ return oParent.getElementsB ...

  7. Skip StyleCop Warnings.

    [SuppressMessage("Microsoft.StyleCop.CSharp.MaintainabilityRules", "SA1401:FieldsMust ...

  8. 26种提高ASP.NET网站访问性能的优化方法 .

    1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池 ...

  9. js 回车提交表单的实现

    我们有时候希望回车键敲在文本框(input element)里来提交表单(form),但有时候又不希望如此.比如搜索行为,希望输入完关键词之后直接按回车键立即提交表单,而有些复杂表单,可能要避免回车键 ...

  10. 使用WebStorm/Phpstorm实现remote host远程开发

    如果你的开发环境是在远程主机上,webstorm可以提供通过ftp/ftps/sftp等方式实现远程同步开发.这样我们可以就抛弃ftp. winscp等工具,通过webstorm编辑远程文件以及部署, ...