文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络程序开发OracleOracle PL/SQL语言初级教程之游标
精品推荐
特别推荐
·ORACLE应用中常见的傻瓜问题1000问 (二)
·自动清除statspack所产生的snapshot旧记录
·MPlayer常见问题解答
·常用数据库比较
·ODBC API常用函数诠释
·提高ORACLE数据库的查询统计速度
·细化解析:Oracle使用的hints调整机制
·解析Oracle/Oracle Forms 的多用途代码
·从Oracle的FORM中调用REPORT的实用技巧
·Oracle SQL精妙SQL语句讲解
热点TOP10
·自动清除statspack所产生的snapshot旧记录
·ORACLE常用傻瓜问题1000问
·Oracle DBMS_REPAIR包修复损坏数据块
·DBMS_REPAIR包修复损坏数据块
·ORACLE应用中常见的傻瓜问题1000问 (二)
·VMware下RedHat安装Oracle 9i RAC全攻略
·Oracle客户端文件打包
·MPlayer常见问题解答
·Oracle SQL精妙SQL语句讲解
·Linux V2.2.X(i386体系结构)进程管理分析

Oracle PL/SQL语言初级教程之游标

日期:2008年6月14日 作者: 查看:[大字体 中字体 小字体]


隐式游标 显式游标
PL/SQL维护,当执行查询时自动打开和关闭  在程序中显式定义、打开、关闭,游标有一个名字。
游标属性前缀是SQL  游标属性的前缀是游标名
属性%ISOPEN总是为FALSE  %ISOPEN根据游标的状态确定值
SELECT语句带有INTO子串,只有一行数据被处理 可以处理多行数据,在程序中设置循环,取出每一行数据。
  使用游标

  这里要做一个声明,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标。要在程序中使用游标,必须首先声明游标。

  声明游标

  语法:

CURSOR cursor_name IS select_statement;

  在PL/SQL中游标名是一个未声明变量,不能给游标名赋值或用于表达式中。

  例:

DELCARE
CURSOR C_EMP IS SELECT empno,ename,salary
FROM emp
WHERE salary>2000
ORDER BY ename;
........
BEGIN

  在游标定义中SELECT语句中不一定非要表可以是视图,也可以从多个表或视图中选择的列,甚至可以使用*来选择所有的列 。

  打开游标

  使用游标中的值之前应该首先打开游标,打开游标初始化查询处理。打开游标的语法是:

OPEN cursor_name

  cursor_name是在声明部分定义的游标名。

  例:

OPEN C_EMP;

  关闭游标

  语法:

CLOSE cursor_name

  例:

CLOSE C_EMP;

  从游标提取数据

  从游标得到一行数据使用FETCH命令。每一次提取数据后,游标都指向结果集的下一行。语法如下:

FETCH cursor_name INTO variable[,variable,...]

  对于SELECT定义的游标的每一列,FETCH变量列表都应该有一个变量与之相对应,变量的类型也要相同。

  例:

SET SERVERIUTPUT ON
DECLARE
v_ename EMP.ENAME%TYPE;
v_salary EMP.SALARY%TYPE;
CURSOR c_emp IS SELECT ename,salary FROM emp;
BEGIN
OPEN c_emp;
FETCH c_emp INTO v_ename,v_salary;
DBMS_OUTPUT.PUT_LINE('Salary of Employee' v_ename
'is' v_salary);
FETCH c_emp INTO v_ename,v_salary;
DBMS_OUTPUT.PUT_LINE('Salary of Employee' v_ename
'is' v_salary);
FETCH c_emp INTO v_ename,v_salary;
DBMS_OUTPUT.PUT_LINE('Salary of Employee' v_ename
'is' v_salary);
CLOSE c_emp;
END

  这段代码无疑是非常麻烦的,如果有多行返回结果,可以使用循环并用游标属性为结束循环的条件,以这种方式提取数据,程序的可读性和简洁性都大为提高,下面我们使用循环重新写上面的程序:

SET SERVERIUTPUT ON
DECLARE
v_ename EMP.ENAME%TYPE;
v_salary EMP.SALARY%TYPE;
CURSOR c_emp IS SELECT ename,salary FROM emp;
BEGIN
OPEN c_emp;
LOOP
FETCH c_emp INTO v_ename,v_salary;
EXIT WHEN c_emp%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Salary of Employee' v_ename
'is' v_salary);
END 

  记录变量

  定义一个记录变量使用TYPE命令和%ROWTYPE,关于%ROWsTYPE的更多信息请参阅相关资料。

  记录变量用于从游标中提取数据行,当游标选择很多列的时候,那么使用记录比为每列声明一个变量要方便得多。

  当在表上使用%ROWTYPE并将从游标中取出的值放入记录中时,如果要选择表中所有列,那么在SELECT子句中使用*比将所有列名列出来要安全得多。

  例:

SET SERVERIUTPUT ON
DECLARE
R_emp EMP%ROWTYPE;
CURSOR c_emp IS SELECT * FROM emp;
BEGIN
OPEN c_emp;
LOOP
FETCH c_emp INTO r_emp;
EXIT WHEN c_emp%NOTFOUND;
DBMS_OUT.PUT.PUT_LINE('Salary of Employee'r_emp.ename'is' r_emp.salary);

上一页 [1] [2] [3] [4] 下一页 




上一篇:案例讨论:Oracle数据库的分组问题

下一篇:在SQL SERVER中实现素数计算

相关文章:
·photoshop修改照片成为美女教程
·初级网管或黑客必需撑握的8个DOS命令
·基础知识 初级黑客安全技术命令详解
·Photoshop头发精细制作教程
·2006年最受欢迎Linux桌面Ubuntu图文安装教程
·非主流ps教程实用的技巧大全
·BIOS设置图解教程
·3Dmax移动硬盘的制作教程
·Flash绘画技巧:蓝色人物绘制教程
·C语言的常用库函数使用方法分析及用途
相关软件:

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot