《oracle 10g入门与提高》第6章:pl、sql程序设计

上传人:千****8 文档编号:118839354 上传时间:2019-12-26 格式:PPT 页数:57 大小:501KB
返回 下载 相关 举报
《oracle 10g入门与提高》第6章:pl、sql程序设计_第1页
第1页 / 共57页
《oracle 10g入门与提高》第6章:pl、sql程序设计_第2页
第2页 / 共57页
《oracle 10g入门与提高》第6章:pl、sql程序设计_第3页
第3页 / 共57页
《oracle 10g入门与提高》第6章:pl、sql程序设计_第4页
第4页 / 共57页
《oracle 10g入门与提高》第6章:pl、sql程序设计_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《《oracle 10g入门与提高》第6章:pl、sql程序设计》由会员分享,可在线阅读,更多相关《《oracle 10g入门与提高》第6章:pl、sql程序设计(57页珍藏版)》请在金锄头文库上搜索。

1、第6章 PL/SQL程序设计,学习重点: PL/SQL的控制结构 PL/SQL记录和表 过程与函数 异常处理,本章逻辑结构,6.1 PL/SQL基础 6.1.1 变量及声明 6.1.2 数据类型 6.1.3 表达式 6.1.4 PL/SQL程序块结构 6.1.5 PL/SQL程序的运行环境 6.2 PL/SQL的控制结构 6.2.1 顺序结构 6.2.2 选择结构 6.2.3 NULL结构 6.2.4 循环结构 6.3 PL/SQL记录和表 6.3.1 使用%TYPE 6.3.2 记录类型,本章逻辑结构,6.3.3 使用%ROWTYPE 6.3.4 表 6.4 游标 6.4.1 游标的基本操作

2、 6.4.2 游标的属性操作 6.4.3 参数化游标和隐式游标 6.4.4 游标变量 6.5 过程与函数 6.5.1 过程创建和调用 6.5.2 过程参数设置与传递 6.5.3 函数的创建、查询和调用 6.5.4 删除过程和函数 6.5.5 子程序的位置,本章逻辑结构,6.5.6 子程序的依赖性与执行权限 6.6 触发器 6.6.1 触发器的类型 6.6.2 建立触发器 6.7 异常处理 6.7.1 概念 6.7.2 声明和处理异常 6.7.3 处理异常的特殊方法 6.8 本章小结 6.9 习题,6.1 PL/SQL基础,ANSI标准SQL的Oracle版本的过程化语言的扩展 PL/SQL语言

3、 的特点,6.1.1 变量及声明,选择变量名称的规则 变量必须以字母(AZ)开头 其后跟可选的一个或多个字母、数字(09)或特殊字符$、# 或_ 变量长度不超过30个字符 变量名中不能有空格,6.1.2 数据类型,声明变量或常量的通用语法 变量名 CONSTANT 数据类型 NOT NULLDEFAULT|:=;,PL/SQL的数据类型与相关的子类型,PL/SQL的数据类型与相关的子类型,PL/SQL的数据类型与相关的子类型,6.1.3 表达式,PL/SQL表达式中常用的符号,PL/SQL表达式中常用的符号,6.1.4 PL/SQL程序块结构,未命名的PL/SQL包括 DECLARE -块声明

4、部分 BEGIN -块体的可执行部分 EXCEPTION -异常处理部分,6.1.5 PL/SQL程序的运行环境,PL/SQL程序由PL/SQL引擎执行。PL/SQL引擎是数据库服务器的一部分,图 6.2 PL/SQL引擎在Oracle服务器中的位置,6.2 PL/SQL的控制结构,程序设计语言的核心 检测不同条件并加以处理是程序控制的主要部分 流向控制结构 PL/SQL程序控制程序流的主要结构 顺序结构 选择结构 NULL结构 循环结构,6.2.1 顺序结构,按照语句出现的先后顺序执行,6.2.2 选择结构,if 逻辑结构 3种if逻辑结构 if-then if-then-else if-t

5、hen-elsif,if逻辑规则,规则1:每个if语句都有自己的then,以if开始的语句行不跟语句结束符“;” 规则2:每个if语句块以相应的end if 结束 规则3:每个if语句有且只有一个else。 规则4:else语句行后面不跟语句结束符 规则5:elsif无匹配的end if,6.2.3 NULL结构,空操作或空值结构 处理方法 if Marks60 then Null; else INSERT INTO Student_Course VALUES(Pass,StudentNo, CourseNo); end if;,6.2.4 循环结构,3种循环形式。 1. LOOP-EXIT-

6、END循环 2. WHILE-LOOP-END 循环 3. FOR-IN-LOOP-END循环,1. LOOP-EXIT-END循环,语法如下 loop 执行语句1; 执行语句2; . end loop,2. WHILE-LOOP-END 循环,语法 while 布尔表达式 loop 执行语句1; 执行语句2; . end loop;,3. FOR-IN-LOOP-END循环,语法 for 计数循环变量 in reverse 起始值终止值 loop 执行语句1; 执行语句2; . end loop;,6.3 PL/SQL记录和表,用户自定义的类型 使用自定义类型去声明相应的程序变量 用户自定义

7、的类型记录类型,6.3.1 使用%TYPE,声明变量、常量、记录中的单个字段以及与数据库列、表属性或其他与程序结构相匹配的记录变量 简化了程序结构的定义 程序相对于数据库的修改更加灵活,6.3.2 记录类型,用户自定义的数据类型 声明记录类型的一般语法 TYPE 记录类型 IS RECORD ( 字段1 数据类型 NOT NULL DEFAULT|:= 表达式 , 字段2 ),6.3.3 使用%ROWTYPE,简单地声明记录变量和其他结构 TYPE属性与ROWTYPE属性的区别,6.3.4 表,声明PL/SQL表的语法 TYPE PL/SQL表名 IS TABLE OF 数据类型,6.4 游

8、标,PL/SQL用游标来管理SQL的SELECT语句,游标是为处理这些语句而分配的一大块内存,有时用户手工定义游标。游标定义类似于其他PL/SQL变量,并且必须遵守同样的命名规则。,6.4.1 游标的基本操作,操作顺序 (1)声明游标,使用查询来定义游标的列和行 (2)打开游标,使用PL/SQL命令OPEN来打开一个声明的游标 (3)提取数据,从游标中重复提取每条记录到数据结构中,直到数据集合被提空 (4)关闭游标,使用完游标之后将其关闭,6.4.2 游标的属性操作,游标的属性 ISOPEN FOUND NOTFOUND ROWCOUNT,6.4.3 参数化游标和隐式游标,两种特殊形式的游标

9、参数化游标 隐式游标,6.4.4 游标变量,1. 创建一个游标变量 2. 打开游标变量 OPEN FOR SELECT OPEN FOR EXECUTE OPEN 一个绑定的查询 3. 使用游标变量 4. 关闭游标变量,6.5 过程与函数,PL/SQL中的块的类型 命名块 匿名块 区别,6.5.1 过程创建和调用,定义 创建 CREATE OR REPLACE PROCEDURE 过程名称 (参数IN | OUT | IN OUT 类型, . 参数IN | OUT | IN OUT 类型 ) AUTHID CURRENT_USER| DESIGNER IS | AS 过程体,调用,调用方式 直

10、接利用EXECUTE命令 在PLSQL块中调用,6.5.2 过程参数设置与传递,1. 参数模式 2. 使用AUTHID选项创建存储过程 3. 在形参和实参之间传递值 4. 对形参的限制 5. 按引用和按值传递参数 6. 使用NOCOPY参数,6.5.3 函数的创建、查询和调用,创建语法 CREATE OR REPLACE FUNCTION 函数名称 ( 参数IN | OUT | IN OUT 数据类型, . 参数IN | OUT | IN OUT数据类型) RETURN 返回类型 AUTHID CURRENT_USER| DESIGNER IS | AS 函数体,6.5.4 删除过程和函数,删

11、除过程的语法如下: DROP PROCEDURE 过程名称; 删除函数的语法是: DROP FUNCTION 函数名称;,6.5.5 子程序的位置,1. 存储子程序和数据字典 2. 本地子程序 3. 存储子程序与本地子程序的比较,6.5.6 子程序的依赖性与执行权限,子程序的依赖性 子程序的执行权限,6.6 触 发 器,触发器(trigger)是一些过程,当发生一个特定的数据库事件时就执行这些过程 触发器的适用情况 维护在表创建阶段通过声明限制无法实现的复杂完整性限制 通过记录修改内容和修改者来审计表中的信息 在表内容发生变更时,自动通知其他程序采取相应的处理 在订阅发布环境下,发布有关各种事

12、件的信息,6.6.1 触发器的类型,DML触发器 替代触发器 系统事件触发器 DDL触发器,6.6.2 建立触发器,创建触发器的通用语法: CREATE OR REPLACE TRIGGER 触发器名称 BEFORE | AFTER | INSTEAD OF 激发触发器事件 referencing_clause WHEN trigger_condition FOR EACH ROW 触发器代码;,建立触发器需要注意的问题,触发器主体不能超过32K。如果触发器长度超过了该限制,就要把该体内的某些代码放到单独编译的包或存储子程序中,并从触发器主体中调用这些代码。,6.7 异 常 处 理,PL/SQ

13、L处理错误情况的方法。在PL/SQL代码部分执行的过程中无论何时发生错误,控制自动地转向执行异常部分进行异常处理。,6.7.1 概念,常见的有以下两种异常: Oracle预定义的异常 用户自定义的异常,PL/SQL中常见的预定义异常,PL/SQL中常见的预定义异常,6.7.2 声明和处理异常,1. 处理预定义的异常 语法: EXCEPTION WHEN 异常1 OR 异常2 THEN .; WHEN 异常3 OR 异常4 THEN .; . WHEN OTHERS THEN .; END;,2. 声明和处理用户自定义的异常,语法 异常名称 EXCEPTION;,6.7.3 处理异常的特殊方法,

14、利用触发器生成一段阻止SQL语句发生异常的异常处理代码 用-20 000-20 999之间的任何数值来代替error_number,6.8 本 章 小 结,介绍了Oracle数据库系统的过程语言PL/SQL 详细介绍了PL/SQL的基本概念 PL/SQL块分为匿名块和命名块两种 介绍了异常处理的概念和方法,6.9 习 题,选择题 (1) 在PL/SQL中,下列( )变量名合法。 A. 3dffswa B. A Variable C.Rose$_1 D. Ta%a (2) 在PL/SQL中,数据类型CHAR字符串的最大长度为( )。 A. 32 767 B. 2000 C.4000 D. 2 1

15、47 483 647,6.9 习 题,填空题 (1)控制结构是所有程序设计语言的核心,PL/SQL程序可以使用 、 、 和 来控制程序流。 (2)PL/SQL用 来管理SQL的SELECT语句。,6.9 习 题,简答题 (1) SQL语言已经很强大了,Oracle为什么还要引入PL/SQL语言? (2) PL/SQL提供了哪些循环结构?举例说明。 (3) 简要介绍游标的操作顺序。,6.9 习 题,上机操作题 (1) 在SQL*Plus环境下,编写一个学生信息的打印过程。 首先建立学生信息记录,包括学号、姓名、性别、籍贯、学习成绩和活动成绩。 编写学生信息打印过程PrintStudentRecord,把建立的学生信息记录类型作为参数;,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业信息化/信息管理

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