`
z_xiaofei168
  • 浏览: 197892 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle之游标(九)

阅读更多

oracle之游标(九)

      游标(cursor)可以被看作指向结果集(a set of rows)中一行的指针(pointer)。在oracle数据库中可以使用显示或隐式两种游标。

 

隐式游标:

在执行一个sql语句时,oracle服务器将自动创建一个隐式游标,这个游标是内存中处理该语句的工作区域,其中存储了执行SQL语句的结果.通过游标的属性可获得sql语句执行的结果以及游标状态信息。

   游标的主要属性如下:

      %found 布尔属性  如果sql语句至少影响一行 则为true 否则为false

      %notfound 布尔属性 %found相反。

      %isopen 布尔属性 游标是否打开  打开为true 否则为false

      %rowcount 数字属性 返回受sql语句影响的行数

怎么来使用这些属性呢?

则可以通过 “sql属性名来查看结果

//%rowcount 用来检查受影响的行

declare emp_row emp%rowtype; begin select * into emp_row from emp where empno=7369; dbms_output.put_line(sql%rowcount); end; / 1 //返回的结果为1



 

 

//%found用来检查是否影响到了 begin update emp set sal=2000 where empno=7369; if sql%found then dbms_output.put_line('更新记录成功影响了'||sql%rowcount||'行'); else dbms_output.put_line('未更新记录'); end if; end; /



 

/

更新记录成功 影响了1

 

  // %notfound

  //%isopen

  一以上两个的使用方式参考 %found进行理解。

 

 

另外一种隐式游标cursor for loop可用于处理sql语句的结果集

 

begin for rec in (select * from emp) loop dbms_output.put_line(rec.empno||'/'||rec.ename||'/'||rec.job||'/'||rec.mgr||'/'||rec.hiredate||'/'||rec.sal||'/'||rec.comm||'/'||rec.deptno); end loop; end; /


 

 

 

 

显示游标

     是在PL/SQL程序中使用包含select语句来声明的游标。如果需要处理从数据库中检索的一组记录,则可以使用显示游标.使用显示游标处理数据需要四个步骤:声明游标,打开游标,检索数据,关闭游标。

       1、  声明游标

        声明游标就是通过定义游标的名称,游标的特性来声明游标,以及打开游标后就可调用查询语句,声明的语法如下:

     Cursor cursor_name[parameter[,parameter]….]

     [return return_type] is select_statement;

Parameter作为游标的输入参数,它可以让用户在打开游标式,向游标传递值;语法如下:

  Parameter_name [in] datatype[{:=|default} expression]

举例:

  declare cursor emp_cursor (pno in number(4) default 7369) is select * from emp where empno=pno;



 

 

2、  打开游标

 

 就是指执行声明游标时指定的查询语句。打开的方式只需使用open打开语法:

 Open cursor_name(参数);

 如果没有指定参数就采用默认值执行select语句

 

        3、  检索数据

检索数据就是从检索到的结果集中获取数据保存到变量中,以便变量进行处理。

 

        4、  关闭游标

 

2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics