游标的概念

来源:互联网 发布:温附一医软件 编辑:程序博客网 时间:2024/04/20 10:17
1) 使用Select语句可以返回一个结果集,而如果需要对结果集中单独的行进行操作,则需要使用游标;
2) 使用游标主要遵循4个步骤----声明游标、打开游标、检索游标、关闭游标;
  • 声明游标:主要是定义一个游标名称来对应一条查询语句,从而可以利用该游标对比查询语句返回的结果集进行单行操作;
  • 打开游标:在声明游标时为游标指定了查询语句,但此时该查询语句并不会被Oracle执行。只有打开游标后,Oracle才会执行查询语句;
  • 检索游标:打开游标后,游标所对应的Select语句也就被执行了,如果想要获取结果集中的数据,就需要检索数据。检索数据,实际上就是从结果集中获取单行数据并保存到定义的变量中,这需要使用Fetch语句,其语法如下
      fetch cursor_name into  variable [,...];

                  其中,variable用来存储结果集中单行数据的变量,可以选择使用多个普通类型的变量,一对一的接收数据行中的列值;也可以使用一个%rowtype类型的变量,或

           自义的记录类型变量,接收数据行中所有的列值。变量需要事先定义。

  • 关闭游标:关闭游标需要使用close语句。游标被关闭后,Oracle将释放游标中select语句的查询结果所占用的系统资源;

3)游标的属性

游标属性的使用,是在属性前添加游标名称,如cursor_name%found;

  • %found:返回布尔类型的值。用于判断最近一次读取记录时是否有数据行返回,若有则返回true,否则返回false;
  • %notfound:返回布尔类型的值,与%found相反;
  • %isopen:返回布尔类型的值。用于判断游标是否已经打开,若打开则返回true,否则返回false;
  • %rowcount:返回数字类型的值。用于返回已经从游标中读取的记录数;
4)游标的循环

  • 简单游标循环:loop搭配fetch实现简单游标循环,遵循游标的4个步骤执行;
  • 游标for循环:在这种情况下,不需要手动打开和关闭游标,也不需要手动判断游标是否还有返回记录,而且在for语句中设置的循环变量本身就存储了当前检索记录的所有列值,因此也不再需要定义变量接受记录值,即for循环中,不能对游标进行open、fetch、close操作;

5)使用游标可以更新表中的数据;

          游标的更新操作针对当前游标所定位的数据行。要想实现使用游标更新数据,首先需要在声明游标时使用for update字句,然后就可以在update和delete语句使用where current of字句,修改或删除游标结果集中当前行对应的表中的数据行。

0 0
原创粉丝点击