《北大青鸟Oracle教程集Chapter6》由会员分享,可在线阅读,更多相关《北大青鸟Oracle教程集Chapter6(29页珍藏版)》请在金锄头文库上搜索。
1、Version 3.0PL/SQL 第六章第六章回顾回顾第五章第五章 - - Oracle 中的中的 OOP 概念概念 面向对象的功能面向对象的功能封装、多态和继承封装、多态和继承 Oracle 支持各种各样的对象支持各种各样的对象 抽象数据类型是包含一种或多种子类型的数据类型抽象数据类型是包含一种或多种子类型的数据类型 可变数组允许在单个行中存储某个记录的重复属性可变数组允许在单个行中存储某个记录的重复属性 嵌套表是表中的表。表在另一个表中被表示为行嵌套表是表中的表。表在另一个表中被表示为行 嵌套表对条目数没有限制嵌套表对条目数没有限制 对对象象视视图图允允许许在在仅仅使使用用关关系系表表的
2、的应应用用程程序序中中实实现现面面向对象的概念向对象的概念 行对象不是嵌入对象行对象不是嵌入对象2 2目标目标PL/SQL 简介简介数据类型及其用法数据类型及其用法逻辑比较逻辑比较控制结构控制结构错误处理简介错误处理简介3 3PL/SQL 简介简介PL/SQL 代表代表 Procedural Language/SQL(Procedural Language:过程语言)过程语言)它是对它是对 SQL 的扩展的扩展PL/SQL 中存在过程构造和数据库访问中存在过程构造和数据库访问在在 Oracle 服务器和客户机应用程序中使服务器和客户机应用程序中使用用支持大型对象和集合支持大型对象和集合4 4P
3、L/SQL 的优点的优点支持对象类型和集合支持对象类型和集合调用外部函数和过程调用外部函数和过程支持支持 SQL支持支持 OOP更高生产率更高生产率更佳性能更佳性能可移植性可移植性与与 Oracle 集成在一起集成在一起严密的安全性严密的安全性5 5PL/SQL 的体系结构的体系结构2 - - 1SQL 语句执行器语句执行器主程序或主程序或 ORACLE 工具工具匿名匿名 PL/SQL 块块匿名匿名 PL/SQL 块块过程语句过程语句执行器执行器ORACLE 服务器服务器PL/SQL 引擎引擎过程语句过程语句SQL语句语句 6 6PL/SQL 的体系结构的体系结构2 - - 2PL/SQL 引
4、擎是主要组件,它驻留在引擎是主要组件,它驻留在 Oracle 服务器中服务器中PL/SQL 引擎引擎处理处理 PL/SQL 块并将其分块并将其分离为离为 SQL 语句及过程语句语句及过程语句将过程语句发送到过程语句执行器以将过程语句发送到过程语句执行器以进行处理进行处理将将 SQL 语句发送到语句发送到 SQL 语句执行器语句执行器以进行处理以进行处理7 7PL/SQL 块块它包括一组语句它包括一组语句PL/SQL 程序中的基本单元程序中的基本单元将相关的声明和语句进行逻辑分组将相关的声明和语句进行逻辑分组声明对于块是局部的声明对于块是局部的在块完成之后,将在块完成之后,将超出范围超出范围8
5、8PL/SQL 的结构的结构PL/SQL 的各个组成部分的各个组成部分声明部分声明部分可执行部分可执行部分异常处理部分异常处理部分PL/SQL 块的结构块的结构DECLARE DECLARE declarationsdeclarationsBEGIN BEGIN executable statementsexecutable statements EXCEPTIONEXCEPTION handlershandlersEND;END;其中,其中,declarationsdeclarations 是声明,是声明,executableexecutable statementsstatements 是
6、可执行语句,是可执行语句,handlershandlers 是处理是处理程序。程序。9 9变量变量数据的临时存储数据的临时存储在声明部分中声明在声明部分中声明可以在可以在 SQL 语句和过程语句中使用语句和过程语句中使用在可执行部分中赋予新值在可执行部分中赋予新值使用变量的优点使用变量的优点可重用性可重用性易于维护易于维护1010数据类型数据类型8 - - 1 内置数据类型内置数据类型标量标量复合复合引用引用LOB1111数据类型数据类型8 - - 2标量标量容纳单个值容纳单个值没有内部组成没有内部组成分为四个类别:分为四个类别:NUMBERCHARACTERDATEBOOLEAN1212数据
7、类型数据类型8 - - 3Number 类型类型用于存储和操纵数字数据用于存储和操纵数字数据Number 类型是:类型是:BINARY_INTEGERNUMBER子类型是子类型是 DEC、DECIMAL、DOUBLE PRECISION、FLOAT、INTEGER、INT、NUMERIC、REAL、SMALLINTPLS_INTEGER1313数据类型数据类型 8- - 4Character 类型类型CHARVARCHAR2RAWLONG 和和 LONG RAWROWID 和和 UROWID区域字符类型区域字符类型NCHARNVARCHAR21414数据类型数据类型8 - - 5Datetim
8、e 和和 Interval 类型类型DATETIMESTAMPTIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TIME ZONEINTERVAL YEAR TO MONTHINTERVAL DAY TO SECOND1515数据类型数据类型8 - - 6BOOLEAN 类型类型用于存储逻辑值(用于存储逻辑值(TRUE、FALSE 和和 NULL)不接受任何参数不接受任何参数不能向数据库中插入不能向数据库中插入 BOOLEAN 数据数据不能将列值提取或选择到不能将列值提取或选择到 BOOLEAN 变变量中量中只允许对只允许对 BOOLEAN 变量执行逻辑
9、操作变量执行逻辑操作 1616数据类型数据类型 8- - 7组合类型组合类型RECORDVARRAYNESTED TABLELOB 类型类型BLOBCLOBNCLOBBFILE 引用类型引用类型 REF CURSOR REF操作符操作符 1717数据类型数据类型 8- - 8属性属性引用数据库中的数据类型和对象引用数据库中的数据类型和对象PL/SQL 变量和常量可以具有属性变量和常量可以具有属性属性的类型属性的类型%type引用数据库列引用数据库列%rowtype代表表中的行代表表中的行 1818逻辑比较逻辑比较 4- - 1PL/SQL 支持支持 SQL 和和 PL/SQL 中变量中变量和常
10、量的比较(称为和常量的比较(称为“布尔表达式布尔表达式”)布尔表达式的类型有:布尔表达式的类型有:数值型数值型 字符型字符型 日期型日期型 1919逻辑比较逻辑比较4 - - 2数值型布尔表达式数值型布尔表达式比较数值比较数值下表说明这一点:下表说明这一点: 2020逻辑比较逻辑比较4 - - 3字符型布尔表达式字符型布尔表达式比较用引号括起来的序列或单个比较用引号括起来的序列或单个字符字符下表说明这一点:下表说明这一点: 运算符运算符 含义含义示例示例=等于name = MARK!=不等于product != computer按字母顺序排在其前 name1 按字母顺序排在其后 name1 n
11、ame2=按字母顺序排在其前或等于 name2 =按字母顺序排在其后或等于 name3 = name42121逻辑比较逻辑比较 4- - 4日期型布尔表达式日期型布尔表达式比较两个日期比较两个日期下表说明这一点:下表说明这一点: 运算符运算符含义含义示例示例=等于Odate = 12-Jan-74!=不等于Odate != 14 Feb - 88早于 Odate 晚于 Odate 30 jun - 77=早于或等于 next_day(odate, 6)=晚于或等于 odate = 25-DEC-672222控制结构控制结构2 - - 1控制流语句控制流语句条件控制条件控制迭代控制迭代控制顺序控
12、制顺序控制条件控制条件控制基于条件执行语句基于条件执行语句类型:类型:if then、if then else、if then elsif 和和 CASE 语句语句2323控制结构控制结构 2- - 2迭代控制迭代控制简单循环简单循环WHILE 循环循环FOR 循环循环顺序控制顺序控制GOTO 语句语句NULL 语句语句2424错误处理错误处理 2- - 1PL/SQL 中的错误条件称为异常中的错误条件称为异常有两种类型的异常:有两种类型的异常:预定义的预定义的用户定义的用户定义的当在当在 PL/SQL 程序中出现错误时,将程序中出现错误时,将引发异常引发异常在出现错误时,正常执行将停止,控在
13、出现错误时,正常执行将停止,控制权转移到异常处理部分制权转移到异常处理部分2525错误处理错误处理2 - - 2预定义的异常预定义的异常PL/SQL 程序违反程序违反 Oracle 规则时,将隐式规则时,将隐式引发它引发它用户定义的异常用户定义的异常由由 raise 语句显式引发语句显式引发只能在只能在 PL/SQL 块的声明部分中声明块的声明部分中声明2626总结总结 3- - 1PL/SQL 代表代表 procedural language/SQL(procedural language:过程语言)过程语言)PL/SQL 是一种块结构的语言是一种块结构的语言将将 SQL 的数据操纵功能与过
14、程语言的数的数据操纵功能与过程语言的数据处理功能结合在一起据处理功能结合在一起允许我们使用所有允许我们使用所有 SQL DML、TCL、SQL 函数和运算符函数和运算符PL/SQL 引擎执行引擎执行 PL/SQL 块块PL/SQL 支持所有支持所有 SQL 数据类型和数据类型和 ANSI 标准类型标准类型2727总结总结 3- - 2PL/SQL 块的三个组成部分是:声明部分、块的三个组成部分是:声明部分、可执行部分和异常处理部分可执行部分和异常处理部分变量和常量是在声明部分中声明的变量和常量是在声明部分中声明的LOB 类型用于存储大型对象类型用于存储大型对象属性用于引用数据库中的数据类型和对
15、象属性用于引用数据库中的数据类型和对象支持对变量和常量进行比较支持对变量和常量进行比较布尔表达式的三种类型是布尔表达式的三种类型是 - - 数值型、字符型数值型、字符型和日期型和日期型2828总结总结 3- - 3控制结构的三种类型是控制结构的三种类型是 - - 条件控制、迭代控条件控制、迭代控制、顺序控制制、顺序控制IF 语句的三种形式是语句的三种形式是 - - IF THEN、IF THEN ELSE、IF THEN ELSIFLOOP 可用于多次执行语句可用于多次执行语句GOTO 语句用于无条件地转移到一个标签语句用于无条件地转移到一个标签位置位置PL/SQL 中的错误条件称为异常中的错误条件称为异常2929