码迷,mamicode.com
首页 > 数据库 > 详细

oracle学习 九 游标的使用(持续更)

时间:2015-01-12 17:14:35      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

   为什么要使用?

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

    关系型数据库是面向集合的,而游标是面向行的,游标可对取出来的集合(结果集)中每一行进行相同或不同的操作,还提供对基于游标位置而对表中数据进行删除或更新的能力,某些特     殊的查询操作也可以通过游标去完成,让你在查询暂时没办法的时候多了一种选择。
游标的类型?
游标分为:
    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

这个方法是说这个变量是表中的一个实例,类似于表里的一行数据。

oracle学习 九 游标的使用(持续更)

标签:

原文地址:http://www.cnblogs.com/llcdbk/p/4218746.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!