Oracle显式游标和隐式游标

来源:互联网 发布:我国网络舆论的特点() 编辑:程序博客网 时间:2024/04/29 14:09

set serveroutput on;
  declare
  cursor mycur(vartype number)is
  select emp_no,emp_zc from cus_emp_basic
  where com_no=vartype;
  begin
  for person in mycur(000627) loop
  dbms_output.put_line('编号:'||person.emp_no||',住址:'||person.emp_zc);
  end loop;
  end;


  显式游标的使用总共分4个步骤:

  1.声明游标

  在DECLEAR部分按以下格式声明游标:

  CURSOR 游标名[(参数1 数据类型[参数2 数据类型...])]

  IS SELECT语句;

  参数是可选部分,所定义的参数可以出现在SELECT语句的WHERE子句中。如果定义了参数,则必须在打开游标时传递相应的实际参数。

  SELECT语句是对表或视图的查询语句,甚至也可以是联合查询。可以带WHERE条件、ORDER BY或GROUP BY等子句,但不能使用INTO子句。在SELECT语句中可以使用在定义游标之前定义的变量。

  例:

DELCARE
  CURSOR C_EMP IS SELECT empno,ename,salary
  FROM emp   WHERE salary>1500
  ORDER BY ename;
  ........
  BEGIN


  在游标定义中SELECT语句中不一定非要表可以是视图,也可以从多个表或视图中选择.

  2.打开游标

  使用游标中的值之前应该首先打开游标,打开游标初始化查询处理。打开游标的语法

  OPEN 游标名[(实际参数1[实际参数2,...])];

  打开游标时,SELECT语句的查询结果就被传送到了游标工作区。

  例:

  OPEN C_EMP;

  3.提取数据

  从游标得到一行数据使用FETCH命令。每一次提取数据后,游标都指向结果集的下一

  FETCH cursor_name INTO variable[,variable,...]

  对于SELECT定义的游标的每一列,FETCH变量列表都应该有一个变量与之相对应,变

  在可执行部分,按以下格式将游标工作区中的数据取到变量中。提取操作必须在打开游标之后进行。

  FETCH 游标名 INTO 变量名1[变量名2,...];

  或

  FETCH 游标名 INTO 记录变量;

  游标打开后有一个指针指向数据区,FETCH语句一次返回指针所指的一行数据,要返回多行需重复执行,可以使用循环语句来实现。控制循环可以通过判断游标的属性来进行。

  下面对这两种格式进行说明:

  第一种格式中的变量名是用来从游标中接收数据的变量,需要事先定义。变量的个数和类型应与SELECT语句中的字段变量的个数和类型一致。

  第二种格式一次将一行数据取到记录变量中,需要使用%ROWTYPE事先定义记录变量,这种形式使用起来比较方便,不必分别定义和使用多个变量。

  定义记录变量的方法如下:

  变量名 表名|游标名%ROWTYPE;

  其中的表必须存在,游标名也必须先定义。 

原创粉丝点击