PL\SQL学习笔记(五) 游标

原创 2013年12月03日 10:21:06

       PL\SQL 语句用游标来管理SQL语句返回的记录. 游标是为处理这些语句而分配的一个私有SQL工作区,用来执行和存储SQL语句处理的信息.Oracle服务器用游标来命名每一个SQL工作区,不同的SQL语句,游标的使用情况不同,可将游标分为两类:隐式游标和显示游标.

       隐式游标对应于DML语句和select语句的执行空间和相应的信息.系统自动将此类游标命名为SQL.例如,执行一条SELECT语句时,Oracle 自动为该语句创建一个游标,当"打开"游标时,实际上是执行该SELECT语句将数据读取到SQL工作区中;当移动游标指针时,实际上是将游标指针指向该SELECT语句返回的下一条记录.

       显示游标一般用于需要对多条记录按顺序一条一条进行处理的场合,能方便地控制数据的处理过程,被处理的数据集成为活动数据集.显示游标由程序员定义和维护,名称由程序员确定.

   

declare
 cursor c is
 select * from emp;
v_emp c%rowtype;
begin
open c;
fetch c into v_emp;
dbms_output.put_line(v_emp.ename);
close c;
end;
/

游标加入循环

declare
   cursor c is
   select * from emp;
v_emp c%rowtype;
begin
 open c;
loop

fetch c into v_emp;
exit when (c%notfound);
dbms_output.put_line(v_emp.ename);

end loop;
close c;
end;
/

游标的属性:


 1)%ISOPEN:  布尔型.判断指定的游标是否已经打开

 2)%NOTFOUND 布尔型.如最近一次fetch操作没有返回结果,则值为TRUE .

 3)%FOUND 布尔型 .最近一次fetch操作有返回结果,则值为TRUE .

 4)%ROWCOUNT 数值型 ,取值为当前位置返回的记录数,可用该属性控制要处理的记录数.


for 循环:


declare
   cursor c is
       select * from emp;
  begin
 for v_emp in c loop
    dbms_output.put_line(v_emp.ename);
end loop;
end;
/

带参数的游标:

declare
 cursor c (v_deptno emp.deptno%type,v_job emp.job%type)
  is
     select ename,sal from emp where deptno = v_deptno and job = v_job;
   --v_temp c%rowtype;
begin
 for v_temp in c(30,'CLERK') loop
    dbms_output.put_line(v_temp.ename);
end loop;
end;
/

使用游标进行更新 : 非重点


declare
 cursor c
  is
  select * from emp2 for update;
--v_temp c%rowtype ;
begin

   for v_temp in c loop
  if(v_temp.sal<2000) then
 update emp2 set sal =sal *2 where current of c;
   elsif (v_temp.sal = 5000) then
  delete from emp2 where current of c;
end if ;
end loop;
commit;
end;
/


PL/SQL游标使用详解

每当在PL/SQL中执行一个SQL语时,Oracle数据库都会为这个语句分一个上下文区域(Context Area)来处理所必需的信息,其中包括语句处理的行数,一个指向语句被分析以后的表示形式的指针以...
  • chiclewu
  • chiclewu
  • 2013年12月23日 00:01
  • 3684

PL/SQL之游标属性详解

游标属性%isopen,%found,%notfound,%rowcount,以及简单循环,while循环使用
  • yhl_jxy
  • yhl_jxy
  • 2016年02月28日 12:12
  • 1199

PL/SQL 游标的使用

 游标的使用 ①游标概念 为了处理SQL 语句,ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息, 其中包括要处理的行的数目,一个指向语句被分析以...
  • wzg775192833
  • wzg775192833
  • 2014年11月17日 15:06
  • 1517

PL/SQL中游标和游标变量的使用

游标是什么:游标字面理解就是游动的光标。用数据库语言来描述:游标是映射在结果集中一行数据上的位置实体,有了游标用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提...
  • junmail
  • junmail
  • 2007年01月11日 17:23
  • 25177

pl/sql--带参数游标的使用

,SELECT语句都没有WHERE子句,或者用WHERE子句指定了一个固定的条件,这样每次都查询同样的数据。在更多的情况下,可能要根据实际情况查询不同的数据。为了通过游标对数据进行更加灵活的处理,可以...
  • u014458564
  • u014458564
  • 2014年07月17日 11:31
  • 560

pl/sql用游标获取表的每一行

orcl pl/sql用游标获取表的每一行
  • nlznlz
  • nlznlz
  • 2014年06月15日 21:02
  • 1208

PL/SQL 语句块初次接触(游标使用,实现loop的continue)

语句块结构        包含三部分:声明部分、执行部分和异常部分,其中执行部分是必须的,声明和异常部分是可选的。 DECLARE  --声明语句BEGIN  --执行语句EXCEPTION  --异...
  • qzwujiaying
  • qzwujiaying
  • 2010年10月12日 16:44
  • 3526

PL/SQL_游标使用

使用游标 当在PL/SQL块中执行查询语句(SELECT)和数据操纵语句(DML)时,Oracle会为其分配上下文区(Context Area),游标是指向上下文区的指针。对于数据操纵语句和单行SEL...
  • com185272358
  • com185272358
  • 2014年03月21日 19:26
  • 692

oracle pl/sql 程序块,游标,生成测试数据

AMORT_DATE:=to_char(add_months(to_date(myemp.Pmt_dt,'yyyy-mm-dd'),-1),'yyyy-mm-dd');--日期减一个月 declare...
  • aq23es
  • aq23es
  • 2016年11月30日 13:55
  • 579

oracle pl sql 更新游标

EMP表在SCOTT用户下。用SCOTT/TIGER登录。 创建EMP表的副本: CREATE TABLE EMP1 AS SELECT * FROM EMP; 创建更新游标,用来更新EMP1:...
  • feier7501
  • feier7501
  • 2014年03月11日 22:20
  • 424
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PL\SQL学习笔记(五) 游标
举报原因:
原因补充:

(最多只允许输入30个字)