使用游标

1497阅读 0评论2012-03-10 高傲的活着
分类:Oracle

    当在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. 基于游标定义记录变量
上一篇:ORACLE数据库中通过触发器实现自动增加
下一篇:HttpServletResponse输出中文的问题