资源描述:
《游标、存储过程和触发器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第10章游标、存储过程和触发器课程描述介绍Oracle数据库程序设计中经常会用到的3个概念,即游标、存储过程和触发器。本章知识点游标存储过程管理触发器管理游标游标的基本概念游标控制语句游标属性游标FOR循环游标的基本概念游标示意图游标的基本概念使用显式游标(1)说明游标。(2)打开游标。(3)读取数据。(4)关闭游标。游标的基本概念隐式游标【例】使用SELECT语句声明隐式游标,从HR.Departments表中读取Department_name字段的值到变量DepName:SETServerOutputON;DECLAREDep
2、NameHR.Departments.Department_Name%Type;BEGINSELECTDepartment_nameINTODepNameFROMHR.DepartmentsWHEREDepartment_ID=10;dbms_output.put_line(DepName);END;游标控制语句(1)声明游标语句CURSOR:DECLARECURSOR<游标名>[(<参数列表>)]IS
3、UMBER)ISSELECTUserId,UserNameFROMUsersWHEREUserType=varType;游标控制语句(2)打开游标语句OPEN:OPEN<游标名>[(<参数列表>)];【例】打开游标MyCur,读取类型为1的用户信息:OPENMyCur(1);游标控制语句(3)游标取值语句FETCH。游标取值语句FETCH的基本语法结构如下:FETCH<游标名>INTO<变量列表>;【例】在打开的游标MyCur的当前位置读取数据:FETCHMyCurINTOvarI,dvarName;(4)关闭游标语句CLOSE:
4、CLOSE<游标名>;【例】关闭游标MyCur:CLOSEMyCur;游标控制语句【例】下面介绍一个完整的游标应用实例:/*打开显示模式*/SETServerOutputON;DECLARE--开始声明部分varIdNUMBER;--声明变量,用来保存游标中的用户编号varNameVARCHAR2(50);--声明变量,用来保存游标中的用户名--定义游标,varType为参数,指定用户类型编号CURSORMyCur(varTypeNUMBER)ISSELECTUserId,UserNameFROMUsersWHEREUserTyp
5、e=varType;BEGIN--开始程序体OPENMyCur(1);--打开游标,参数为1,表示读取用户类型编号为1的记录FETCHMyCurINTOvarId,varName;--读取当前游标位置的数据CLOSEMyCur;--关闭游标dbms_output.put_line('用户编号:'
6、
7、varId
8、
9、',用户名:'
10、
11、varName);--显示读取的数据END;--结束程序体游标属性(1)%ISOPEN属性【例】下面的代码演示当使用未打开的游标时,将会出现错误:/*打开显示模式*/SETServerOutputON;D
12、ECLARE--开始声明部分varNameVARCHAR2(50);--声明变量,用来保存游标中的用户名varIdNUMBER;--声明变量,用来保存游标中的用户编号--定义游标,varType为参数,指定用户类型编号CURSORMyCur(varTypeNUMBER)ISSELECTUserId,UserNameFROMUsersWHEREUserType=varType;BEGIN--开始程序体FETCHMyCurINTOvarId,varName;--读取当前游标位置的数据CLOSEMyCur;--关闭游标dbms_outp
13、ut.put_line('用户编号:'
14、
15、varId
16、
17、',用户名:'
18、
19、varName);--显示读取的数据END;--结束程序体游标属性【例】修改上面的程序,在使用游标之前,调用%ISOPEN属性判断游标是否打开。/*打开显示模式*/SETServerOutputON;DECLARE--开始声明部分varNameVARCHAR2(50);--声明变量,用来保存游标中的用户名varIdNUMBER;--声明变量,用来保存游标中的用户编号--定义游标,varType为参数,指定用户类型编号CURSORMyCur(varTypeNU
20、MBER)ISSELECTUserId,UserNameFROMUsersWHEREUserType=varType;BEGIN--开始程序体IFMyCur%ISOPEN=FALSEThenOPENMyCur(2);ENDIF;FETCHMyCur