Heim >Datenbank >MySQL-Tutorial >Oracle--plsql游标创建和使用

Oracle--plsql游标创建和使用

WBOY
WBOYOriginal
2016-06-07 17:12:471111Durchsuche

游标(cursor)是Oracle系统在内存中开辟的一个工作区,在其中存放SELECT语句返回的查询结果。,PL/SQL隐式建立并自动管理这一游

为什么要Oracle游标:

先看这个:

  • DECLARE   
  •  v_empno emp.empno%type;   
  •  v_ename emp.ename%type;   
  • BEGIN   
  •  SELECT empno,ename   
  •  into v_ename,v_empno   
  •  FROM   emp;   
  •  dbms_output.put_line(v_empno||' '||v_ename);  
  • END;  
  • 这个SELECT语句可能返回多条记录,所以这个赋值语句可能是错误的。所以游标可以发挥作用了。

    什么是游标?

    游标(cursor)是Oracle系统在内存中开辟的一个工作区,在其中存放SELECT语句返回的查询结果。

    游标的分类:

    隐式游标:PL/SQL隐式建立并自动管理这一游标。隐式游标也叫做SQL游标。 对于SQL游标,不能对其显式地执行OPEN、CLOSE和FETCH语句,,但是可以使用游标属性从最近执行的SQL语句中获取信息。

    显式游标:由程序员显式说明及控制,用于从表中取出多行数据,并将多行数据一行一行单独处理。

    隐式游标:

  • 由Oracle在内部声明
  • 由Oracle自行管理游标
  • 可以使用游标属性从最近执行的SQL语句中获取信息
  • 用于处理DML语句以及返回单行的查询
  • 隐式游标属性:

    隐式游标举例:

  • VARIABLE rows_deleted VARCHAR2(30)  
  • DECLARE  
  •   v_deptno  NUMBER := 20;  
  • BEGIN    
  •   DELETE FROM  emp  
  •   WHERE  deptno = v_deptno;  
  •   :rows_deleted := (SQL%ROWCOUNT ||' rows deleted.');  
  • END;  
  • /  
  • 返回所删除行的数量

    显式游标:由用户显式声明,查询返回多行记录

  • 使用游标时,select语句查询的结果可以是单条记录,多条记录,也可以是零条记录。
  • 游标工作区中,存在着一个指针(POINTER),在初始状态它指向查询结果的首记录。
  • 要访问查询结果的所有记录,可以通过FETCH语句,进行指针的移动来实现。
  • 使用游标进行操作,包括定义游标、打开游标、提取数据以及关闭游标几步。
  • 更多Oracle相关信息见Oracle 专题页面 ?tid=12

    linux

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn