为什么要使用?

笔者查阅了一些资料之后得到的结论是,

    关系型数据库是面向集合的,而游标是面向行的,游标可对取出来的集合(结果集)中每一行进行相同或不同的操作,还提供对基于游标位置而对表中数据进行删除或更新的能力,某些特     殊的查询操作也可以通过游标去完成,让你在查询暂时没办法的时候多了一种选择。
游标的类型?
游标分为:
    1、fetch 定义的游标名 into 游标变量
    2、for 游标变量 in 游标名 loop
   两种方式,其中for方式是隐式游标,可以对数据库后台进行打开关闭的操作,fetch是显示游标,需要操作者自行打开关闭,关于二者优劣网上说法不一,但是个人来看,还是for的方   式比较简便。
游标语法:
  有以下例子:
  for:
  
declare
--定义游标
cursor c_job
is
--查询的语句
select user_id,user_name from t_user_info;
--定义游标变量
c_row c_job%rowtype;
begin
--使用游标变量在游标中进行检索
for c_row in c_job loop
dbms_output.put_line(c_row.user_id||'-'||c_row.user_name);
--循环条件结束
end loop;
end;

fetch:

DECLARE
-- 定义游标.
CURSOR c_test_main IS
SELECT user_id, user_name FROM t_user_info;
-- 保存游标数据的变量
v_main_data c_test_main%ROWTYPE;
BEGIN
-- 打开游标.
OPEN c_test_main;
LOOP
-- 填充数据(主表).
FETCH c_test_main INTO v_main_data;
-- 假如没有检索到(主表)数据,结束循环处理
Exit when c_test_main%NOTFOUND; dbms_output.put_line(v_main_data.user_id||'-'||v_main_data.user_name); END LOOP;
-- 关闭游标
CLOSE c_test_main;
END;

备注?

 1、 

dbms_output.put_line('输出内容');

 2、

游标变量名  表名%rowtype

游标变量名  游标名%rowtype

个人测试了以下,声明游标变量的两种方法中

游标变量名  游标名%rowtype  
这种方式运行的速度更快一点,它是再说这个变量是一行数据的实例,
类似于游标里的一行数据。而
游标变量名  表名%rowtype

这个方法是说这个变量是表中的一个实例,类似于表里的一行数据。
一种简单的操作方法也可以是这样的:
declare
n_count number;
begin
for cur_record in(
--游标要查询的集合
select t.category_id from AM_CATEGORY t)
loop
--游标执行的内容
execute immediate 'update am_'||cur_record.category_id||'_entry set storage_id=null where storage_id is not null';
DBMS_output.put_line('update am_'||cur_record.category_id||'_entry set storage_id=null where storage_id is not null');
end loop;
--commit;
end;

其中excute immediate是为了解决动态拼接表名进行游标式表数据更新的一种方式 ,EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交 ,刚动态拼接的表不会马上存在,1. EXECUTE IMMEDIATE会让这个表理科变成真实的表,这样就可以及时使用了
cur_record.category_id:游标名.查询的字段名称
不是动态的表一般不用到
excute immediate
如:
declare
cur_entryid number;
begin
for cur_entryid in(
--游标要查询的集合
select entry_id from AM_AJ_ENTRY )
loop
--游标执行的内容
delete from AM_AJ_datum t where t.entry_id =cur_entryid.entry_id;
end loop;
--commit;
end;

oracle学习 九 游标的使用(持续更)的更多相关文章

  1. (七)Oracle学习笔记—— 游标

    1.游标简介 游标用来处理从数据库中检索的多行记录(使用SELECT语句).利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集. 为了处理SQL语句,Oracle将在内存中分配一个区域,这就是 ...

  2. Oracle学习(七)游标

    一.简介 定义 实质上是数据集,类似数组一样,把查询的数据集存储在内存当中. 使用时可以通过游标指向其中一条记录,也可以通过循环游标达到循环数据集的目的. 游标的种类 显式游标: 使用之前必须得先声明 ...

  3. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...

  4. Oracle学习线路

    出自huyangg的博客,地址是:oracle学习路线图 1.sql.pl/sql(网上有很多的视频,可以做一个简单的入手,然后看几本书,多做实验)    作为oracle的基本功,需要大家对sql和 ...

  5. oracle 学习笔记

    --2.2 进入和退出oracle数据库--在windows中输入cmd打开命令窗口 然后输入 sqlplu / as sysdba--验证数据库是否安装成功 --select status from ...

  6. Java调用oracle存储过程通过游标返回临时表数据

    注:本文来源于 <  Java调用oracle存储过程通过游标返回临时表数据   > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...

  7. oracle学习--循环语句

    oracle学习--循环语句  loop循环: create or replace procedure pro_test_loop is i number; begin i:=0; loop i:=i ...

  8. Oracle学习笔记—数据字典和常用命令(转载)

    转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...

  9. oracle学习 第二章 限制性查询和数据的排序 ——03

    这里.我们接着上一小节2.6留下的问题:假设要查询的字符串中含有"_"或"%".又该如何处理呢? 開始今天的学习. 2.7  怎样使用转义(escape)操作符 ...

随机推荐

  1. Codeforces 475 B Strongly Connected City【DFS】

    题意:给出n行m列的十字路口,<代表从东向西,>从西向东,v从北向南,^从南向北,问在任意一个十字路口是否都能走到其他任意的十字路口 四个方向搜,搜完之后,判断每个点能够访问的点的数目是否 ...

  2. iso中AutoLayout和Autoresizing Mask的区别

    •在iOS6之前,关于屏幕旋转的适配和iPhone,iPad屏幕的自动适配,基本都是由Autoresizing Mask来完成的.但是随着大家对iOS App的要求越来越高,以及今后可能出现的多种屏幕 ...

  3. LeetCode Reverse Linked List II 反置链表2

    题意:将指定的一段位置[m,n]的链表反置,返回链表头. 思路:主要麻烦在链表头,如果要从链表头就开始,比较特殊. 目前用DFS实现,先找到m-1的位置,再找到n+1的位置,中间这段就是否要反置的,交 ...

  4. zipline

    history 多只股票时会返回某几只股票停牌没数据 if not symbol(stock) in data: 聚宽 多只股票如果某几只没有发行 600485: nan 多只股票如果某几只停牌 60 ...

  5. MySQL连接问题浅析

    MySQL的客户端,无论是PHP或者Java,都会发起多个连接来提高系统的吞吐量.在云里面的服务器,因为一些设计和实现上的不同,有一些问题被放大了,同时也带了一些新的问题. 连接的超时时间 在Azur ...

  6. 2015-10-09 Fri 晴 加快进度看书

    最近老感觉每天不够用,每天7点起来,吃饭完了8点开始看书,不知道是我看书太慢了还是时间过得真的很快,不知不觉中午就到了.而这个时候我才看2章的内容,下午能多看3章内容.一本书也就一天的时候,而我现在还 ...

  7. struts2中错误处理

    定义一个 package,然后其他package都继承 这个package struts-global 就 有了这个错误处理功能了 然后再自己写个类 struts.xml <constant n ...

  8. 继承TextView简单画一个尺子

    import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; impor ...

  9. vector容器总结.xml

    1 清空所有元素     m_itemVector.clear();   2 遍历     vector<ITEM_CHECK>::iterator iter=m_itemVector.b ...

  10. 苹果将通过新Apple TV打造电视游戏平台 欲发力家庭游戏(转)

    据<纽约时报>报道,9月10日凌晨1时举行的苹果发布会上将会公布新版Apple TV设备,还会推出TV版App Store.新设备以游戏作为主要卖点,图形性能将大幅提升. 苹果2015年秋 ...