Oracle--plsql游标创建和使用

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


游标的分类


隐式游标

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




隐式游标举例:
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语句,进行指针的移动来实现。

使用游标进行操作,包括定义游标、打开游标、提取数据以及关闭游标几步。




create table emp_test(
name varchar2(2000),
sal number);

create or replace procedure pro1 is
cursor pro_cousor is
select empno||ename,sal from emp;  --使用||拼接
v_name varchar2(2000);
v_sal number;
begin
open pro_cousor; --分号不能省略
  LOOP
  exit when pro_cousor%NOTFOUND;
   fetch pro_cousor into v_name,v_sal;
   insert into emp_test values(v_name,v_sal);
  end loop;
  close pro_cousor;
end;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章