oracle 游标实例


oracle游标 

游标-----内存中的一块区域,存放的是select的结果 
    
    游标用来处理从数据库中检索的多行记录(使用SELECT语句)。利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集。 
    为了处理SQL语句,Oracle将在内存中分配一个区域,这就是上下文区。这个区包含了已经处理完的行数、指向被分析语句的指针,游标就是指向上下文区句柄或指针。 

伦理片 http://www.dotdy.com/

缺点:游标使用时会对行加锁,可能会影响其他业务的正常进行。 
       而且,数据量大时其效率也较低。因为游标其实是相当于把磁盘数据整体放入了内存中,如果游标数据量大会造成内存不足,也有可能导致cpu高,所以,在数据量小时才使用游标。 

优点:相当于程序中的FOR循环处理。一条一条的处理你读取的记录内容。 
       数据存放在内存中,数据量少的时候速度比较快。 

一、显示游标 
    显示游标被用于处理返回多行数据的SELECT 语句,游标名通过CURSOR….IS 语句显示地赋给SELECT 语句。 
     在PL/SQL中处理显示游标所必需的四个步骤: 
     1)声明游标;CURSOR cursor_name IS select_statement 
     2)为查询打开游标;OPEN cursor_name 
     3)取得结果放入PL/SQL变量中; 
            FETCH cursor_name INTO list_of_variables; 
            FETCH cursor_name INTO PL/SQL_record; 
     4)关闭游标。CLOSE cursor_name 
     注意:在声明游标时,select_statement不能包含INTO子句。当使用显示游标时,INTO子句是FETCH语句的一部分。 
   
二、隐式游标 
     所有的隐式游标都被假设为只返回一条记录。 
     使用隐式游标时,用户无需进行声明、打开及关闭。PL/SQL隐含地打开、处理,然后关掉游标。 
     例如: 
     SELECT studentNo,studentName INTO curStudentNo,curStudentName 
     FROM StudentRecord  WHERE name=’gg’; 
     上述游标自动打开,并把相关值赋给对应变量,然后关闭。执行完后,PL/SQL变量curStudentNo,curStudentName中已经有了值。 
   
     单条sql语句所产生的结果集合 
     用关键字SQL表示隐式游标 
     4个属性 %rowcount  影响的记录的行数  整数 
             %found     影响到了记录  true 
             %notfound  没有影响到记录  true 
             %isopen    是否打开  布尔值 永远是false 
     多条sql语句 隐式游标SQL永远指的是最后一条sql语句的结果 
     主要使用在update 和 delete语句上 
  影音先锋电影 http://www.iskdy .com/     
三、常见游标实例     
(1)for循环游标 
SQL> set timing on 
SQL> set serverout on 
SQL> set pagesize 1000 
SQL> set linesize 400 
SQL> declare 
        cursor c1 is select id,ins_time,random_string from mytest where random_id=50;  ---定义游标 
        c1cur c1%rowtype;       ---定义一个游标变量 
     begin 
        for c1cur in c1 loop    ---for循环 
          dbms_output.put_line(c1cur.id||':'||c1cur.ins_time||'-'||c1cur.random_string); 
        end loop; 
     end; 
     / 
113:2015-12-23 16:39:41-1TP6AU8U5JJ1O16FIUSZ 
176:2015-12-23 16:40:44-N77Y47YGZQJH2ONG504R 
187:2015-12-23 16:40:55-PIQG1HNPM6EVFZXD8N7G 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值