游标的基本应用

一、使用游标的理由。

      我本是一个用MSSQL多的程序员,所以习惯上是用select 语句的多,但经ORACLE资深应用人员介绍,游标在第一次执行时比select慢,但以后用同一个游标却会快很多。所以现在的ERP里很多东西都用游标来写。

二、游标格式:

      普通格式:

     declare

          cursor rec_ IS

               select 语名;

     例:

      declare

           cursor rec_ IS

                  select ikey,customerName

                  from customer;

      带参数格式:

      declare

           cursor rec_(pram1 varchar2,...)   IS

               select 语句;

      例:

      declare

           cursor rec_(name_ varchar2)   IS

                  select ikey,customerName

                  from customer

                  where  customerName=name_;

三、游标使用

     普通格式

     取第一行的值。

     open rec_;

     Fetch rec_ into 变量1,变量2(相对select语句的栏位)

     close rec_;

     例:

      declare

           key_         number;

           cname_      varchar2(50);

           cursor rec_ IS

                  select ikey,customerName

                  from customer;

     begin

           open rec_;

           fetch rec_      into      key_,cname_;

           dbms_output.put_line('key:'||key_||'#name:'||cname_);

           close rec_;

     end;

    取循环值。

     for [item]  in rec_   loop

         变量1:=[item].[col1相对select语句的栏位名];

         .......

     end loop;

     例:

      declare

           key_         number;

           cname_      varchar2(50);

           cursor rec_ IS

                  select ikey,customerName

                  from customer;

     begin

          for   item_ in rec_ loop

              dbms_output.put_line('key:'||rec_.ikey||'#name:'||rec_.customerName );

          end loop;

     end;

     带参数格式:

     for item_ in rec_(值1,......) loop

          变量1:=[item].[col1相对select语句的栏位名];

         .......

     end loop;

     例:

      declare

           key_         number;

           cname_      varchar2(50);

           cursor rec_(cname_ varchar2) IS

                  select ikey,customerName

                  from customer

                  where customerName=cname_;

     begin

          for   item_ in rec_('XX集团') loop

              dbms_output.put_line('key:'||rec_.ikey||'#name:'||rec_.customerName );

          end loop;

     end;

 

     这些都是游标的最基本的应用,游标里面可以嵌套游标,形成多循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值