游标提供了一种从集合性质的结果集中提供出单条记录的手段。初始时指向首记录。

  • 游标的种类

    静态游标、REF游标

    静态游标:能够理解为一个数据快照,打开游标后的结果集是数据库表中数据的备份,数据不会对表的DML操作而改变。

    ①显式静态游标:是指在使用之前必须有明白的游标定义,这样的游标的定义会关联数据查询语句。一般会返回一行或多行,打开游标后能够利用游标的位置对结果集进行检索,使之返回单一的行记录,用户能够操作该记录,关闭游标后就不能对结果集进行操作。

    ②隐式静态游标:和显式游标不同,它被PL/SQL自己主动管理,也被称为SQL游标。

  • 显示游标的使用

    语法

cursor cursor_name[(parameter_name datatype,...)]
is
select_statement;
使用步骤:声明、打开、读取数据、关闭

①声明游标
declare cursor cursor_name is select_statement;
②打开游标(游标一旦被打开,结果就是静态的了)
open cursor_name;
③读取数据
读取数据要用到fetch,它能够吧游标指向位置的记录读取到pl/sql声明的变量中。
fetch cursor_name into record_name
④关闭游标
close cursor_name;

游标中简单的loop语句

eg:

declare
cursor test_cursor is select * from test1;
test_id test1.id%type;
test_name test1.name%type;
test_money test1.money%type; begin
open test_cursor;
loop
fetch test_cursor into test_id,test_name,test_money;
exit when test_cursor%notfound;
dbms_output.put_line('.....');
end loop;
close test_cursor;
end;

须要注意的是:使用fetch…into..提取数据的时候的单条提取,数据量较大时效率比較低。

使用fetch…bulk collect into 提取大数据量的游标数据

eg:

declare
cursor emp_cursor is
select * from emp;
type emp_tab is table of emp%rowtype;
emp_rd emp_tab;
begin
open emp_cursor;
loop
fetch emp_cursor bulk collect into emp_rd limit 2;
for i in 1...emp_rd.count
loop
dbms_output.put_line(......);
end loop;
exit when emp_cursor%notfound;
end loop;
close emp_cursor;
end;

利用cursor … for … loop 便利游标数据。使用简洁、方便

eg:

declare
cursor test_cursor is
select * from test1;
begin
for rec in test_cursor
loop
dbsm_output.put_line(.....);
end loop;
end;

带參数的游标

eg:

declare
test_id1 test.id%type := 1;
test_id2 test.id%type := 2;
cd_test test1%rowtype;
cursor test_cursor(id1 number,id2 number)
is select * from test1 where id in(id1,id2);
begin
open test_cursor(test_id1,test_id2);
loop
fetch test_cursor into cd_test;
exit when test_cursor%notfound;
dbsm_output.put_line(...);
end loop;
close test_cursor;
end;
  • 隐式游标

    隐式游标和显式游标有所差异,它显没有显式游标的课操作性,每当执行DQL或DML语句时,PL/SQL会打开一个隐式游标,隐式游标不受用户控制。

    ①隐式游标由pl/sql自己主动管理

    ②隐式游标的默认名称是SQL

    ③DQL和DML语句产出隐式游标

    ④隐式游标的属性值是指是最新执行的sql语句的。

SQL-Oracle游标的更多相关文章

  1. Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器

    ---视图 ---视图的概念:视图就是提供一个查询的窗口,来操作数据库中的数据,不存储数据,数据在表中. ---一个由查询语句定义的虚拟表. ---查询语句创建表 create table emp a ...

  2. oracle游标透彻详解分析

    主:本文来自:http://www.cnblogs.com/huyong/archive/2011/05/04/2036377.html 4.1 游标概念 4.1.1 处理显式游标 4.1.2 处理隐 ...

  3. Oracle 游标

    游标的简介 游标的概念 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作 ...

  4. Oracle 游标使用(转)

    这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 ; ; dbms_output.put_line(sql) loop dbms_output.put_line( ; ; ; r_te ...

  5. Oracle 游标使用全解(转)

    转自:http://www.cnblogs.com/sc-xx/archive/2011/12/03/2275084.html 这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- ...

  6. Oracle游标动态赋值

    1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...

  7. Oracle 游标Cursor 的基本用法

    查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT语句时,要与INTO子句一起使用,查询的 返回值被赋予INTO子句中的变量,变量的声明是在DELCARE中.SELECT ...

  8. Oracle游标介绍

    Oracle游标使用详解: 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标.要在程序中使用游标,必须 ...

  9. Oracle游标使用

    Oracle游标介绍: --声明游标 CURSOR cursor_name IS select_statement --For 循环游标 --()定义游标 --()定义游标变量 --()使用for循环 ...

  10. [转载]Oracle 游标使用全解

    这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- 声明游标:CURSOR cursor_name IS select_statement --For 循环游标--(1)定义游标- ...

随机推荐

  1. cloneNode克隆节点在不同浏览器的差异

    cloneNode是用于克隆节点的,如果待克隆的节点还有子节点以及自定义属性.添加的有事件,那么克隆时,可以指定是克隆节点本身,还是将其所有子节点信息也克隆进去,这是通过给cloneNode传递一个布 ...

  2. Spring AOP高级——源码实现(1)动态代理技术

    在正式进入Spring AOP的源码实现前,我们需要准备一定的基础也就是面向切面编程的核心——动态代理. 动态代理实际上也是一种结构型的设计模式,JDK中已经为我们准备好了这种设计模式,不过这种JDK ...

  3. requests和BeautifulSoup

    一:Requests库 Requests is an elegant and simple HTTP library for Python, built for human beings. 1.安装 ...

  4. x01.AntWorld: An Python AI Game

    1. 学习了一下 AI 五子棋,顺手改作 19 路的棋盘,便于围棋通用.render.py 主要修改如下: # 常量部分: IMAGE_PATH = 'img/' StoneSize = 32 WID ...

  5. centos安装maven,git,mysql

    安装maven1:下载maven包:http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bi ...

  6. Android开发之漫漫长途 番外篇——自定义View的各种姿势1

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  7. Spring4 AOP详解

    Spring4 AOP详解 第一章Spring 快速入门并没有对Spring4 的 AOP 做太多的描述,是因为AOP切面编程概念不好理解.所以这章主要从三个方面详解AOP:AOP简介(了解),基于注 ...

  8. eclipse中Maven工程使用Tomcat7以上插件

    Maven中使用tomcat:run命令默认是使用Tomcat6的版本, 现在要用到Tomcat7以上的版本,在eclipse的Maven工程中配置如下 第一步:在项目的pom里面加入如下配置: 官网 ...

  9. C#学习笔记---数据库连接与异常

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  10. 2735:八进制到十进制-poj

    总时间限制:  1000ms 内存限制:  65536kB 描述 把一个八进制正整数转化成十进制. 输入 一行,仅含一个八进制表示的正整数a,a的十进制表示的范围是(0, 65536). 输出 一行, ...