Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2160349
  • 博文数量: 556
  • 博客积分: 11457
  • 博客等级: 上将
  • 技术积分: 5973
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-24 22:33
文章分类

全部博文(556)

文章存档

2013年(22)

2012年(74)

2011年(460)

分类: Oracle

2012-03-10 19:44:41

    当在PL/SQL块中执行查询语句(select)和数据操纵语句(DML)时,Oracle会为其分配上下文区,游标是指向上下文区的指针。
                           显示游标使用示例
  1. 显式游标中使用FETCH...INTO语句

点击(此处)折叠或打开

  1. --在PL/SQL块中显示部门10的所有雇员名及其工资

  2. DECLARE
  3.  CURSOR emp_cursor IS
  4.   SELECT ename,sal FROM emp WHERE deptno=10;
  5.   v_ename emp.ename%TYPE;
  6.   v_sal emp.sal%TYPE;
  7.  BEGIN
  8.     OPEN emp_cursor;
  9.     LOOP
  10.     FETCH emp_cursor INTO v_ename,v_sal;
  11.     EXIT WHEN emp_cursor%NOTFOUND;
  12.     dbms_output.put_line(v_ename||': '||v_sal);
  13.     END LOOP;
  14.    CLOSE emp_cursor;
  15.  END;

  16.  --在Oracle9i之前,使用FETCH...INTO语句每次只能处理一行数据。

运行结果:

点击(此处)折叠或打开

  1. zhangsan: 800
  2. CLARK: 2450
  3. KING: 5000
  4. MILLER: 1300
  2.在显式游标中,使用FETCH...BULK COLLECT INTO语句提取所有数据
   

点击(此处)折叠或打开

  1. DECLARE
  2.  CURSOR emp_cursor IS
  3.   SELECT ename FROM emp WHERE deptno=10;
  4.   TYPE ename_table_type IS TABLE OF VARCHAR2(10);
  5.   ename_table ename_table_type;
  6.   BEGIN
  7.   OPEN emp_cursor;
  8.   FETCH emp_cursor BULK COLLECT INTO ename_table;
  9.   FOR i IN 1.. ename_table.COUNT LOOP
  10.    dbms_output.put_line(ename_table(i));
  11.    END LOOP;
  12.    CLOSE emp_cursor;
  13.   END;

  1. 在显式游标中使用FETCH...BULK COLLECT INTO ...LIMIT语句提取部分数据
  2. 使用游标属性
  3. 基于游标定义记录变量
阅读(1408) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~