WEB开发网
开发学院数据库Oracle 从概念到示例—Oracle显式游标 阅读

从概念到示例—Oracle显式游标

 2009-04-11 13:13:25 来源:WEB开发网   
核心提示:个人总结: 游标就是一个指向在客户端通过查询语句返回结果集中的指针,它存储在服务器端、并维护着它内部所存储的数据,从概念到示例—Oracle显式游标,它主要利用了服务器端的高性能,解决了复杂运算在网络间通信差的问题,然后才能使用哦.示例1:使用游标简单的提取一行记录declare /*以下声明了一个显式游标,指向查询到

个人总结:

游标就是一个指向在客户端通过查询语句返回结果集中的指针,它存储在服务器端、

并维护着它内部所存储的数据,它主要利用了服务器端的高性能,解决了复杂运算在网

络间通信差的问题,游标不可乱用,否则会对服务器端的性能造成一定的影响。

一、显式游标

1.由用户显式声明  cursor

2.游标将指向活动集中的当前行

二、控制显式游标分为三个步骤

1.Open

2.Fetch  提取

3.Close

-- 注意 游标需要先声明,然后才能使用哦.

示例1:使用游标简单的提取一行记录

declare
   /*以下声明了一个显式游标,指向查询到得结果集*/
   cursor  empCur  is  select * from emp;
   emprow emp%rowtype;  --用于存储emp表的一行记录
begin
   open empCur;   --打开游标
   fetch empCur into emprow;  --从游标中提取一行记录
   DBMS_output.put_line('employee no:'||emprow.empno||'employee name'||emprow.ename);
   close empCur; --关闭游标
end;

示例2:使用游标提取表中的所有记录,用loop循环提取

declare
   cursor  empCur  is  select * from emp;--声明游标
   emprow emp%rowtype;  --用于存储emp表的一行记录
begin
   open empCur;  
   loop
     fetch empCur into emprow; 
     exit when empCur%notfound; --退出条件
     DBMS_output.put_line('employee no:'||emprow.empno||'employee name:'||emprow.ename);
     DBMS_output.put_line('提取了'||empCur%rowcount);
   end loop;
   close empCur; --关闭游标
end;

示例3:使用游标提取表中的所有记录,用while循环提取

declare
   cursor  empCur  is  select * from emp;--声明游标
   emprow emp%rowtype;  --存储emp表的一行记录
begin
   open empCur; 
   fetch empCur into emprow;   --先初始化
   While empCur%Found Loop     --进入循环的条件
     DBMS_output.put_line('employee no:'||emprow.empno||' '||'employee name:'||emprow.ename);
     DBMS_output.put_line('提取了'||empCur%rowcount);
   fetch empCur into emprow;   --增量条件  否则进入死循环
   end loop;
   close empCur; --关闭游标
end;

示例4:使用游标提取表中的所有记录,用for循环提取

特点是:

自动声明行级变量

自动打开 

自动提取

自动关闭的

简化代码的编写

缺点是:

一次性会把结果集都输出。造成不必要的资源浪费。

declare
   cursor  empCur  is  select * from emp;--声明游标
begin
    for emprow in empCur loop
     DBMS_output.put_line('employee no:'||emprow.empno||' '||'employee name:'||emprow.ename);
     DBMS_output.put_line('提取了'||empCur%rowcount);
    end loop;
end;

示例5:改造游标,使用绑定变量,使游标具有动态性

使用绑定变量在编译时对代码进行赋值

declare
   cursor  empCur  is  select * from emp where  sal>&InputSalary;
   iCount int;
begin
    iCount:=&iCount;
    DBMS_output.put_line('iCount='||iCount);
    for emprow in empCur loop
     DBMS_output.put_line('employee no:'||emprow.empno||' '||'employee name:'||emprow.ename);
     DBMS_output.put_line('提取了'||empCur%rowcount);
    end loop;
end;

示例6:带参数的游标使用方法

 declare
     cursor empCur(param number default 10) is select * from emp where deptno=param;
 begin
     for emprow in empCur(10) loop
        DBMS_output.put_line('employee no:'||emprow.empno||' '||'employee name:'||emprow.ename);
     end loop;
 end;

Tags:概念 Oracle 游标

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接