您的位置:首页 > 数据库

PL/SQL之显示游标使用

2016-02-27 23:44 274 查看
1.认识游标

ORACLE在执行增删改查时,ORACLE会在内存中分配缓冲区。游标是指向该区的一个指针,通过指针找到每一行的数据。

注:PL/SQL程序中,处理多行数据时通常选用游标来处理;

不同SQL使用游标的情况如下:

非查询语句,游标是隐式的;

结果是单行的查询语句,游标可以是显式的,也可以是隐式的;

结果是多行的查询语句,游标是显式的;

2.显式游标

显式游标的处理需要四个步骤:

(1)定义/声明游标,定义游标名和相应的SELECT语句

语法格式:

CURSOR cursor_name[(param1,param2..)]--参数,可以选择
[RETURN dataType]--返回值
IS
SELECT语句。
--参数格式
param_name [IN] dataType [:= DEFAULT expression]
--注意:dataType类型不能跟长度,如NUMBER(4)等都会报错。
(2)打开游标

打开游标的作用就是执行SELECT语句,将数据放入缓冲区,同时指针指向缓存区数据集合顶部;

语法格式:

OPEN cursor_name [(param1 value1,param2 value2....)];
--如果定义时有参数,需传入对应的参数值


(3)提取游标

检索结果集合中的数据行,将其放入对应的输出变量中

语法格式:

FETCH cursor_name INTO {variable_list|record_variable };
FETCH执行一次,就会返回一条记录,指针指向下一行,如果抓不到数据时,将会操作失败,同时将游标属性

%NOTFOUND设置成true,所以每次检索时都需要去判断%NOTFOUND的状态,以便确定循环抓取的情况,

做出正确的处理。

(4)关闭游标

当提取和处理游完游标结果集,需及时关闭游标,释放占用的系统资源,同时使得游标的工作区无效,FETCH将不能

再抓到数据。当我们想再用时,通过OPEN命令打开。

CLOSE cursor_name;

显示游标使用实例:

第一步,创建表,插入数据:

<span style="color:#000000;">create table mytest(
id number(3),
name varchar2(20),
age number(3)
);
insert into mytest values(1,'one',18);
insert into mytest values(2,'two',20);
insert into mytest values(3,'three',24);
commit; </span>
第二步,实例

DECLARE
--1.定义游标
CURSOR cursor_test
IS SELECT NAME,age FROM mytest;
v_name mytest.name%TYPE;
v_age mytest.age%TYPE;
BEGIN
--2.打开游标
OPEN cursor_test;
--3.fetch抓取
/*A部分从游标顶部抓取第一行数据,游标指向下一行数据,
B部分WHILE循环,先看布尔表达式是否满足,满足有值,接着忘下循环。
循环中每循环一次,从第二行开始抓数据,知道数据集合处理完毕。*/
FETCH cursor_test INTO v_name,v_age;--A
WHILE cursor_test%FOUND LOOP--B
DBMS_OUTPUT.PUT_LINE(v_name||' '||to_char(v_age));
FETCH cursor_test INTO v_name,v_age;
END LOOP;
--4.关闭游标
CLOSE cursor_test;
END;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: