第7章 游标、存储过程、触发器和程序包.ppt





《第7章 游标、存储过程、触发器和程序包.ppt》由会员分享,可在线阅读,更多相关《第7章 游标、存储过程、触发器和程序包.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Shenzhen lean-sigma consultant Co.,LTD 版权所有版权所有 翻版必究翻版必究1 1/41/411 1/57/57第第7 7章章 存储过程、触发器和程序包存储过程、触发器和程序包南京信息工程大学南京信息工程大学 计算机与软件学院计算机与软件学院XX XX(HK)LTD 2 2/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院2 2/57/57教学目的与要求教学目的与要求(1 1)熟练游标的使用
2、;)熟练游标的使用;(2 2)掌握过程和函数的创建、调用过程;)掌握过程和函数的创建、调用过程;(3 3)理解存储过程中各种形式的参数;)理解存储过程中各种形式的参数;(4 4)掌握触发器的概念、分类及特点;)掌握触发器的概念、分类及特点;(5 5)熟悉程序包规范和主体。)熟悉程序包规范和主体。XX XX(HK)LTD 3 3/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院3 3/57/577.1 7.1 游标游标7.2 7
3、.2 存储过程和函数存储过程和函数7.3 7.3 触发器触发器7.4 7.4 程序包程序包本章主要内容本章主要内容XX XX(HK)LTD 4 4/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院4 4/57/57教学重点与难点教学重点与难点(1 1)游标的使用)游标的使用(2 2)存储过程、函数的创建)存储过程、函数的创建(3 3)各种形式的参数)各种形式的参数(4 4)各种触发器的特点及使用)各种触发器的特点及使用XX X
4、X(HK)LTD 5 5/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院5 5/57/577.1 7.1 游标游标 游标的作用就相当于指针,通过游标程序设计语言就可以一次处理查询结果集中的一行。在Oracle中,游标可以分为两大类:静态游标和REF游标。REF游标是一种引用类型,类似于指针。而静态游标又可以分为隐式游标和显式游标。XX XX(HK)LTD 6 6/x/xNANJING UNIVERSITY OF INFORM
5、ATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院6 6/57/577.1.1 7.1.1 7.1.1 7.1.1 隐式游标隐式游标隐式游标隐式游标 在执行一个SQL语句时,Oracle会自动创建一个隐式游标。这个游标是内存中处理该语句的工作区域,在其中存储了执行SQL语句的结果。通过游标的属性可获知SQL语句的执行结果,以及游标的状态信息。u%FOUND:%FOUND:布尔型,如果SQL语句至少影响到一行数据,则该属性为TRUE,否则为FALSE。u%NOTFOUND:%NOTFOUND
6、:布尔型,与%FOUND相反。u%ISOPEN:%ISOPEN:布尔型,当游标已经打开时返回TRUE,否则为FALSE。u%ROWCOUNT:%ROWCOUNT:数值型,返回受SQL语句影响的行数。XX XX(HK)LTD 7 7/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院7 7/57/57XX XX(HK)LTD 8 8/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECH
7、NOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院8 8/57/57 游标的属性信息反映的是最新的SQL语句处理结果。在一个程序这出现多个SQL语句时,需要及时检查属性值。XX XX(HK)LTD 9 9/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院9 9/57/57 处理SQL语句返回的结果集时,需要使用CURSOR FOR LOOP语句通过隐式游标进
8、行处理。XX XX(HK)LTD 1010/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院1010/57/577.1.2 7.1.2 7.1.2 7.1.2 显式游标显式游标显式游标显式游标 在PL/SQL程序中处理结果集时,用户也可以通过显式定义游标,然后手动操作该游标处理结果集。使用显式游标处理数据需要的四个步骤:定义游标、打开游标、提取游标数据和关闭游标。XX XX(HK)LTD 1111/x/xNANJING UNI
9、VERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院1111/57/57(1 1)定义游标)定义游标 游标由游标名称和对应的SELECT结果集组成。与声明变量一样,定义游标也放在PL/SQL程序块的声明部分。CURSOR cursor_name(parameter,parameter)RETURN return_type IS select_statement;PARAMETER参数的格式:parameter_name in datatype:=|defau
10、lt expression注意:注意:在指定参数数据类型时,不能使用长度约束。XX XX(HK)LTD 1212/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院1212/57/57(2 2)打开游标)打开游标OPEN cursor_name(value,value);打开游标的过程包括两个步骤:u将符合条件的记录送入内存;u将指针指向第一条记录。XX XX(HK)LTD 1313/x/xNANJING UNIVERSITY
11、OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院1313/57/57(3 3)提取游标数据)提取游标数据 提取游标中的数据就是将检索到的结果数据保存到变量中,以便在程序中进行处理。可以使用FETCH语句从游标中提取数据。FETCH cursor_name INTO(variable_list|record_variable);在游标中包含了一个指针,最初打开游标时,指针指向结果集中的第一行。当使用FETCH语句提取数据时,游标中的指针会自动指向下一行。这样,可以在循环中
12、使用FETCH语句提取数据,使得每一次循环都会从结果集中读取一行数据。直到结果集中没有剩余的记录(%FOUND属性值为FALSE)。XX XX(HK)LTD 1414/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院1414/57/57(4 4)关闭游标)关闭游标 使用完游标后,用户必须显式关闭游标,以释放SELECT语句的查询结果。CLOSE cursor_name;XX XX(HK)LTD 1515/x/xNANJING
13、UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院1515/57/57XX XX(HK)LTD 1616/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院1616/57/577.1.3 7.1.3 7.1.3 7.1.3 游标游标游标游标FORFORFORFOR循环循环循环循环 游标
14、通常与循环联合使用。PL/SQL还提供了一种将两者综合在一起的语句,即游标FOR循环语句。游标FOR循环是显式游标的一种快捷使用方式,它使用FOR循环依次读取结果集中的数据。当FOR循环开始时,游标会自动打开(不需要使用OPEN方法),每循环一次系统自动读取游标当前行的数据(不需要使用FETCH),当退出FOR循环时,游标被自动关闭(不需要使用CLOSE)。for cursor_record in cursor_name loop statements;end loop;XX XX(HK)LTD 1717/x/xNANJING UNIVERSITY OF INFORMATION SICENCE
15、&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院1717/57/57XX XX(HK)LTD 1818/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院1818/57/577.2 7.2 存储过程和函数存储过程和函数 在很多时候,都需要保存PL/SQL程序块,以便随后可以重新使用。命名的PL/SQL程序块可被独立编译并存储在数据库中,任何与数据库
16、相连接的应用程序都可以访问这些存储的PL/SQL程序块。Oracle提供了四种类型的可存储的程序:过程、函数、触发器和程序包。XX XX(HK)LTD 1919/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院1919/57/577.2.1 7.2.1 7.2.1 7.2.1 存储过程存储过程存储过程存储过程 存储过程是一种命名的PL/SQL程序块,它可以接受零个或多个作为输入、输出或者既作输入又作输出的参数。过程被存储在数据
17、库中,并且存储过程没有返回值,存储过程不能由SQL语句直接使用,只能通过EXECUT命令或PL/SQL程序块内部调用。由于存储过程是已经编译好的代码,所以在调用的时候不必再次进行编译,从而提高了程序的运行效率。XX XX(HK)LTD 2020/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院2020/57/57(1 1)创建存储过程)创建存储过程 定义存储过程的语法如下:create or replace procedure
18、 proc_name(param,param,.)is local declarationsbegin execute statementsexception exception handlers end procedure _nameXX XX(HK)LTD 2121/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院2121/57/57注意:注意:(1)存储过程与匿名程序块类似,也包括三部分:声明部分、执行部分和异常处理部分
19、。(2)不能使用DECLARE关键字表示声明部分,IS关键字后声明的变量为过程体内的局部变量。(3)不能指定参数类型的长度和精度。(4)重新定义存储过程(同名),必须使用OR REPLACE选项,使新版本覆盖旧版本。(5)可以在PL/SQL程序块中调用存储过程,也可以直接在SQL*PLUS中使用EXECUTE语句调用。XX XX(HK)LTD 2222/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院2222/57/57XX
20、XX(HK)LTD 2323/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院2323/57/57XX XX(HK)LTD 2424/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院2424/57/57(2 2)参数)参数 Oracle有三种参数模式:IN、O
21、UT和IN OUT。nININ参数参数 该类型的参数值由调用者传入,并且只能被存储过程读取。这种参数模式是最常用的,也是默认的参数模式。XX XX(HK)LTD 2525/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院2525/57/57 在调用存储过程时,有三种向其传递参数的方法:名称表示法、位置表示法和混合表示法。1 1)名称表示法)名称表示法 名称表示法是指为各个参数传递参数值时指定传入数值的参数名。具体格式如下:pr
22、ocedure_name(param_name=value,param_name=value);优点:优点:明确指定了向各个参数传递的值,在调用过程时就不需要再考虑创建过程时定义的参数顺序。XX XX(HK)LTD 2626/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院2626/57/572 2)位置表示法)位置表示法 当参数比较多时,通过名称表示法调用过程会非常长,此时可以采用位置表示法。采用位置表示法传递参数时,用户提
23、供的参数值顺序必须与过程定义中的参数顺序一致。XX XX(HK)LTD 2727/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院2727/57/573 3)混合表示法)混合表示法 名称表示法和位置表示法各有优缺点,为了弥补这两者的不足,还可以采用混合表示法,以发挥两者的优点。注意:注意:当切换为名称表示法传递参数后,后续的参数也必须使用名称表示法。XX XX(HK)LTD 2828/x/xNANJING UNIVERSITY
24、 OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院2828/57/57nOUTOUT参数参数 OUT类型的参数由存储过程传入值,然后由调用者接收参数值。XX XX(HK)LTD 2929/x/xNANJING UNIVERSITY OF INFORMATION SICENCE&TECHNOLOGY第第7 7章章 游标、存储过程、触发器和程游标、存储过程、触发器和程序包序包计算机与软件学院计算机与软件学院2929/57/57 由于过程要通过OUT参数返回值,所以在调用时必
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 游标、存储过程、触发器和程序包 游标 存储 过程 触发器 程序包

限制150内