设为首页 加入收藏

TOP

【PLSQL】变量声明,结构语句,cursor游标(二)
2015-11-21 02:09:10 来源: 作者: 【 】 浏览:12
Tags:PLSQL 变量 声明 结构 语句 cursor 游标
语句

1.10.1 显式cursor的处理:

declare声明游标:床和命名一个sql工作区;

open打开游标

fetch提取游标

判断是否empty:结果集中是否有未提取的记录;

close关闭游标

1.10.2 显式cursor的属性:

%isopen, 布尔类型,

%notfound,布尔类型,如果前一个fetch语句没有返回一行记录,其值为true;

%found,布尔,如果前一个fetch语句返回记录,其值为true,与%notfound;

%rowcount,数值,到目前为止,cursor已提取的总行数;

1.10.3 隐式cursor的属性

sql%isopen, 布尔类型,DML执行中未true,结束后为false

sql%notfound,布尔类型,与sql%found返回值相反

sql%found, 布尔类型,值为true表DML操作成功

sql%rowcount, 数值类型,表示DML语句成功执行的数据行数;

1.10.4 cursor的使用

声明

在游标声明中使用标准的select语句,如果需要按照指定的次序处理行,可在查询中使用order by字句;可以在查询中引用变量,但是必须在cursor语句之前声明这些变量

cursor c_service_id(p_cost_id number) is

select id from service where cost_id=p_cost_id;

open

通过open cursor来执行select语句并标识结果集;select语句如果没有返回记录,不会出现异常语法;

open c_service_id(5);

fetch cursor

检索当前行,把值赋给变量;变量可以是record类型或者简单变量;如果是简单变量,要求如下:包含相同数量的变量;把每一个变量和相应的列进行位置匹配。通过循环检测cursor中是否包含数据行;

fetch cursor_name into [var1,var2,…| recore_name];

fetch c_service_id into v_service_id;

1.10.5 结果集提前的控制

使用循环处理显式cursor结果集的多行数据;每次fetch一行,反复进行;使用%notfound属性检测一次不成功的提前操作;使用显式cursor的属性检测每一次的提前是否成功,避免出现无限循环;

1.10.6 关闭游标

处理完结果集中的是数据后,应该关闭cursor;如果需要,可以再次打开该curosr;

cursor一旦关闭,所有和该cursor相关的资源都会被释放,不可以再从关闭的cursor中提前数据,可以引起invalid_cursor错误;

close c_service_id;

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇指尖上的数据库之无中生有 下一篇PostgreSQL-系统表、系统视图

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: