《Oracle 10g管理及应用》-王路群-电子教案及练习答案 第九章 PL/SOL程序设计

上传人:E**** 文档编号:89399509 上传时间:2019-05-24 格式:PPT 页数:67 大小:1.16MB
返回 下载 相关 举报
《Oracle 10g管理及应用》-王路群-电子教案及练习答案 第九章 PL/SOL程序设计_第1页
第1页 / 共67页
《Oracle 10g管理及应用》-王路群-电子教案及练习答案 第九章 PL/SOL程序设计_第2页
第2页 / 共67页
《Oracle 10g管理及应用》-王路群-电子教案及练习答案 第九章 PL/SOL程序设计_第3页
第3页 / 共67页
《Oracle 10g管理及应用》-王路群-电子教案及练习答案 第九章 PL/SOL程序设计_第4页
第4页 / 共67页
《Oracle 10g管理及应用》-王路群-电子教案及练习答案 第九章 PL/SOL程序设计_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《《Oracle 10g管理及应用》-王路群-电子教案及练习答案 第九章 PL/SOL程序设计》由会员分享,可在线阅读,更多相关《《Oracle 10g管理及应用》-王路群-电子教案及练习答案 第九章 PL/SOL程序设计(67页珍藏版)》请在金锄头文库上搜索。

1、Oracle 10g管理及应用,第九章 PLSOL程序设计,2019年5月24日星期五,Oracle 10g管理及应用,第九章 PLSOL程序设计,9.1 PL/SQL基础 9.2 PL/SQL控制结构 9.3 PL/SQL记录 9.4 游标 9.5 过程与函数 9.6 触发器 9.7 异常处理 9.8 包 实训7 PL/SQL程序设计,2019年5月24日星期五,Oracle 10g管理及应用,9.1 PL/SQL基础,PL/SQL是一种块结构语言,在完成完整的PL/SQL程序设计之前,必须先对PL/SQL的基础知识进行了解和掌握。,以下是一个简单的PL/SQL程序块的示例: CREATE

2、OR REPLACE PROCEDURE my_first_proc IS greetingMSG VARCHAR2(50); BEGIN greetingMSG := 欢迎来到PLSQL的世界!“; -以变量赋值 DBMS_OUTPUT.PUT_LINE(greetingMSG); /*输出指定的内容*/ END my_first_proc; / 其中最后一行的“/”是在SQL *Plus环境中用于执行程序块的指令,“-”用于行注释,“/* */”用于块注释。,2019年5月24日星期五,Oracle 10g管理及应用,9.1 PL/SQL基础,9.1.1 变量及声明 9.1.2 数据类型

3、9.1.3 表达式 9.1.4 PL/SQL程序块结构,2019年5月24日星期五,Oracle 10g管理及应用,9.1.1 变量及声明,变量是存储值的内存区域,在PL/SQL中,除了一些特殊的情况外,在使用任何变量之前,必须首先声明它, 即必须指定变量的名称和数据类型。,在PL/SQL中,变量的名称必须遵循一定的规定 : 变量名必须以字母开头,由字母、数字、下划线、美元和英镑符号等特殊符号组成,但最好不要用中文。 变量名不区分大小写。 变量名最长为30个字符。 变量名中不能包括任何形式的空白(如空格或制表符等)。 不能使用SQL或PL/SQL的保留字为变量名,因为它们对于SQL和PL/SQ

4、L有特殊含义。,2019年5月24日星期五,Oracle 10g管理及应用,9.1.1 变量及声明,在PL/SQL中,声明变量的语法格式为: 变量名 CONSTRANT 数据类型 NOT NULL DEFAULT | := 默认值; 其中带“”的为可选项,CONSTRANTE用于声明常量,NOT NULL用于指定变量不能为空,DEFAULT或 :=(赋值符号)用于指定变量或常量的默认值。,示例 以下为声明一个变量,变量名为greetingMSG,变量的数据类型为VARCHAR2,长度为50: greetingMSG VARCHAR2(50);,示例 以下为声明一个常量,常量名为PI,数据类型为

5、NUMBER,默认值为3.14159,常量在声明时就要赋值,并且在程序块中不能再次修改值: PI NUMBER := 3.14159;,2019年5月24日星期五,Oracle 10g管理及应用,9.1.2 数据类型,PL/SQL中除了可以使用基本数据类型,其中应用最多的为VARCHAR2、NUMBER、DATE和BOOLEAN四种。,2019年5月24日星期五,Oracle 10g管理及应用,9.1.3 表达式,PL/SQL中的表达式由操作对象和运算符组成。操作对象可以是变量、常量、数字和函数;运算符可以是一元运算符、二元运算符。,PL/SQL中的运算符,2019年5月24日星期五,Orac

6、le 10g管理及应用,9.1.4 PL/SQL程序块结构,PL/SQL中真正起作用的部分都是由基本块组成的,PL/SQL的程序块分为匿名块和命名块。 匿名块是指没有标题或未命名的PL/SQL程序块,匿名块可以在SQL *Plus中运行,也可以用于PL/SQL的函数、过程和触发器。 命名块是指已命名的过程、函数、触发器和包等。,2019年5月24日星期五,Oracle 10g管理及应用,9.1.4 PL/SQL程序块结构,PL/SQL基本块是由4个部分组成:标题部分、可选的声明部分、执行部分和可选的异常处理部分,如: DECLARE -声明部分 BEGIN -执行部分 EXCEPTION -异

7、常处理部分 END; 其中,DECLARE声明部分用于定义PL/SQL中使用到的变量和常量等,BEGIN部分是PL/SQL程序块的主体部分,这里包含PL/SQL实际执行的各种对数据库操作的语句,以及可选的以EXCEPTION开头的异常处理部分。,2019年5月24日星期五,Oracle 10g管理及应用,9.2 PL/SQL控制结构,9.2.1 顺序结构 9.2.2 选择结构 9.2.3 NULL结构 9.2.4 循环结构,2019年5月24日星期五,Oracle 10g管理及应用,9.2.1 顺序结构,在设计PL/SQL的顺序结构过程中,主要注意设计程序执行过程语句的先后顺序,以代码编写的先

8、后次序来控制语句的执行,如下例所示: CREATE OR REPLACE PROCEDURE my_first_proc IS greetingMSG VARCHAR2(50); BEGIN greetingMSG := 欢迎来到PLSQL的世界!“; DBMS_OUTPUT.PUT_LINE(greetingMSG); END my_first_proc; /,注意:如果要看到执行后的输出语句,需要设置变量SERVEROUTPUT的值为ON。,2019年5月24日星期五,Oracle 10g管理及应用,9.2.2 选择结构,选择结构是根据程序运行时条件表达式的具体值来决定执行不同的语句的控制

9、结构。在PL/SQL程序中,可用的选择结构有:IF语句和CASE语句,演示 IF和CASE选择结构,IF的语法结构如下所示: IF 条件表达式1 THEN 语句组1; ELSIF 条件表达式2 THEN 语句组2; ELSE 语句组n; END IF;,CASE的语法结构如下所示: CASE WHEN 条件表达式1 THEN 语句组1; WHEN 条件表达式2 THEN 语句组2; ELSE 语句组n END CASE;,2019年5月24日星期五,Oracle 10g管理及应用,9.2.3 NULL结构,PL/SQL中还有一类特殊的结构,用于表示空操作,名为NULL结构,又称为空值结构。 N

10、ULL结构实际上不执行任何语句,只是起到占位符的作用,用于保证PL/SQL结构的完整性和合法性。,示例: DECLARE n NUMBER := 1; BEGIN IF n = 0 THEN NULL; -空语句,什么也不做 ELSE DBMS_OUTPUT.PUT_LINE(n是大于0的数); END IF; END;,2019年5月24日星期五,Oracle 10g管理及应用,9.2.4 循环结构,循环结构是指重复执行一组语句,直至达到指定循环条件的结束要求。PL/SQL可用的循环结构有LOOP语句、FOR语句和WHILE语句。,1LOOP循环 LOOP循环的语法如下所示: LOOP 循环

11、体内语句; EXIT循环体名称 WHEN 循环结束条件表达式; 循环体内语句; END LOOP;,演示 LOOP循环实现累加,2019年5月24日星期五,Oracle 10g管理及应用,9.2.4 循环结构,2 WHILE循环 在程序运行前不知道循环的迭代次数时,使用WHILE循环比较适合。WHILE循环的语法如下所示:,演示 WHILE循环实现累加,WHILE 循环进行条件表达式 LOOP 循环体内语句; END LOOP;,当WHILE子句中的循环进行条件表达式成立时,循环体内语句将一直循环执行,直到此条件表达式不再成立时,循环结束,直接执行END LOOP后的语句,这与LOOP循环不同

12、。,2019年5月24日星期五,Oracle 10g管理及应用,9.2.4 循环结构,3 FOR循环 在FOR循环中,常常使用循环计数计算迭代的次数。在每次迭代开始时,循环计数器都从指定的最小界限开始递增,或从指定的最大界限开始递减,如果循环读数器超出指定的范围,则循环结束。,演示 FOR循环实现顺序打印,FOR循环语法结构: FOR 循环计数器 IN REVERSE 最小界限 最大界限 LOOP 循环体内语句; END LOOP;,2019年5月24日星期五,Oracle 10g管理及应用,9.3 PL/SQL记录,在PL/SQL程序中,除了可以应用SQL中可以运用的各种类型外,还可以用户自

13、定义数据类型以及通过%TYPE和%ROWTYPE等引用表中的列和行数据类型。,9.3.1 使用%TYPE 9.3.2 记录类型 9.3.3 使用%ROWTYPE,2019年5月24日星期五,Oracle 10g管理及应用,9.3.1 使用%TYPE,在PL/SQL程序中,由于常需要把表中的数据读取到指定的变量中,为了使变量的数据类型和表中的对应列的数据类型一致,可以直接通过%TYPE引用表中指定列的数据类型,这样一旦表中指定列的数据类型被修改,则在程序执行时,将自动引用新的对应数据类型,因此,应用%TYPE可以不必知道变量对应列的数据类型,同时,可以使程序运行时自动适应对应列的数据类型。,演示

14、 应用%TYPE声明变量, 并读取到对应记录的指定列的数据,使用%TYPE常常是用在声明变量时,使用的语法格式如下所示: 变量名 表名.列表%TYPE;,2019年5月24日星期五,Oracle 10g管理及应用,9.3.2 记录类型,如果需要从数据库中读取相应的数据,并进行处理时,需要把读取到的数据存储到指定的变量以方便处理,但如果需要一次把一行记录中的多列的数据读取出来,并用于处理时,应用一般的变量则不能方便地实现,此时需要应用记录类型。,演示 应用记录类型一次读取多个列的数据,记录类型的定义语法格式如下所示: TYPE 记录类型名称 IS RECORD (字段名1 数据类型, 字段名2

15、数据类型, );,2019年5月24日星期五,Oracle 10g管理及应用,9.3.3 使用%ROWTYPE,通过记录类型可以方便地一次读取多列的数据到指定的变量中,当需要一次性的读到所有列数据到变量中时,定义记录类型将比较麻烦,此时可以应用PL/SQL提供的%ROWTYPE技术来自动提取表中行的结构信息,并自动生成对应的行数据类型。,演示 声明一个变量用于读取Employee表中的行的所有列的数据,%ROWTYPE常用于声明行数据类型的变量,其语法格式如下所示: 变量名 表名%ROWTYPE;,2019年5月24日星期五,Oracle 10g管理及应用,9.4 游标,9.4.1 游标基本操

16、作 9.4.2 游标的属性操作 9.4.3 参数化游标和隐式游标 9.4.4 游标变量,2019年5月24日星期五,Oracle 10g管理及应用,9.4.1 游标基本操作,在通过游标对表的行数据进行处理的操作过程,主要包括以下四步:声明游标、打开游标、提取数据和关闭游标。,1声明游标 声明游标就是声明变量,使变量成为指定的PL/SQL控制结构。 声明游标的语法格式如下所示: CURSOR 游标名 IS SELECT语句 2打开游标 在游标声明以后,读取数据之前,必须先打开游标才能使用游标,打开游标使用OPEN语句,其语法格式如下所示: OPEN 游标名;,2019年5月24日星期五,Oracle 10g管理及应用,9.4.1 游标基本操作,3提取数据 提取数据操作是通过游标处理表中的各数据行,提取数据时,需要把游标中的数据行提取到对应结构的变量中,在实际应用中,如果游标声明为查询得到表中所有列的数据,则可直接使用表的%ROWTYPE类型声明变量

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号