收藏 分享(赏)

第9章 PL SQL基础.ppt

上传人:fmgc7290 文档编号:8306650 上传时间:2019-06-19 格式:PPT 页数:38 大小:3.66MB
下载 相关 举报
第9章 PL  SQL基础.ppt_第1页
第1页 / 共38页
第9章 PL  SQL基础.ppt_第2页
第2页 / 共38页
第9章 PL  SQL基础.ppt_第3页
第3页 / 共38页
第9章 PL  SQL基础.ppt_第4页
第4页 / 共38页
第9章 PL  SQL基础.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、第九章,PL/SQL基础,了解PL/SQL的功能 掌握PL/SQL块结构的组成部分 掌握PL/SQL块结构的分类 掌握PL/SQL中的基本数据类型和复合数据类型 掌握PL/SQL的运算符的使用 掌握PL/SQL程序控制语句的使用,1,目标,PL/SQL简介,PL/SQL是Procedure Language & Structured Query Language 的缩写 它是对 SQL 的扩展 PL/SQL 中存在过程构造和数据库访问 在 Oracle 服务器和客户机应用程序中使用 支持大型对象和集合,2,PL/SQL概述,PL/SQL由两部分组成:一部分是数据库引擎部分;另一部分是可嵌入到许

2、多产品工具中的独立引擎。 PL/SQL有如下优点: 高性能且基于事务处理的语言,能运行在任何ORACLE环境中,支持所有数据处理命令。 支持所有SQL数据类型和所有SQL函数,同时支持所有ORACLE对象类型 PL/SQL块可以被命名和存储在ORACLE服务器中,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好的可重用性。 是以整个语句块发给服务器,降低了网络拥挤。 PL/SQL可以嵌套到相应的工具中,客户端程序可以执行本地包含PL/SQL部分,也可以向服务发SQL命令或激活服务器端的PL/SQL程序运行。,2,PL/SQL结构,一个完整

3、的PL/SQL程序的总体结构如下所示:,2,DECLARE /* 声明部分:在此声明PL/SQL用到的变量,类型及游标, 以及局部的存储过程和函数 */ BEGIN /* * 执行部分:过程及SQL语句,即程序的主要部分 */ EXCEPTION /* * 异常处理部分:错误处理 */ END;,注意: 使用dbms_output包输出信息时,需将使用set serveroutput on;语句将SQL*Plus环境变量serveroutput设置为ON。,PL/SQL块分类,使用PL/SQL进行应用开发时,可以将PL/SQL块划分为三部分: 匿名块:动态构造,只能执行一次。 子程序:存储在数

4、据库中的存储过程、函数及包等。当在数据库上建立好后可以在其它程序中调用它们。 触发器:当数据库发生操作时,会触发一些事件,从而自动执行相应的程序,2,匿名块,2,匿名块是指没有名称的PL/SQL块,匿名块即可以内嵌到应用程序(例如Pro*C/C+)中,也可以在交互环境(例如SQL*Plus)中使用。 示例代码如下:,DECLAREv_count number; BEGINSELECT COUNT(*) into v_countFROM empWHERE deptno = ,子程序,2,子程序是指存储在数据库中或者客户端的PL/SQL过程、函数或包。通过将业务逻辑集成到PL/SQL子程序,不仅可

5、以简化客户端程序的开发和维护,而且还可以提高应用程序的性能。 示例代码如下:,CREATE OR REPLACE PROCEDURE update_emp(no NUMBER) IS BEGIN UPDATE emp SET sal = sal*1.1 WHERE empno=no; END;,触发器,2,触发器是指被隐含执行的PL/SQL块。触发器与一个表或数据库事件联系在一起的,当一个触发器事件发生时,定义在表上的PL/SQL语句块被执行。,注释,2,注释用于说明单行代码或者多行代码的作用,从而提高PL/SQL块的可读性。当执行PL/SQL块时,PL/SQL编译器会忽略注释。注释包括单行注

6、释和多行注释。 单行注释:放置在某一行上的注释文本。使用两个破折号(-)可以指定单行注释。 多行注释:多行注释是指分布到多行上的注释文本,并且其主要作用是说明一段代码的作用。使用/*/可以指定多行注释,基本数据类型,2,编写PL/SQL时,为了临时存储数据,需要定义变量和常量。当定义变量、常量和参数时,需要指定合适的PL/SQL数据类型。,标量变量,2,标量变量是指只能存放单个数值的变量。当定义标量变量时,需要指定标量数据类型。常用的标量数据类型有VARCHAR、CHAR、NUMBER、DATE、BOOLEAN、LONG和BINARY INTEGER等。 PL/SQL中的标识符定义与SQL的标

7、识符定义的要求相同 只能使用AZ、AZ、09、_、$和#,如果使用其他字符,需用双引号引住 标识符名不能超过30字符 第一个字符必须为字母 标识符不区分大小写 不能是SQL保留字,使用%TYPE,2,定义变量时,如果其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE,该属性会自动根据表列或其他变量的类型和长度定义新变量。 使用%TYPE特性的优点在于: 所引用的数据库列的数据类型及长度可以不必知道 所引用的数据库列的数据类型可以实时改变 提高PL/SQL块的效率和健壮性,记录类型,2,ORACLE在PL/SQL中除了提供象前面介绍的各种类

8、型外,还提供一种称为复合类型的数据类型,在PL/SQL中使用复合变量可以以特定结构存储多个数值,PL/SQL记录类型是最常用的复合类型之一。 记录类型是把逻辑相关的数据作为一个单元存储起来,它主要用于处理单行多列数据。记录类型必须包括至少一个标量型或RECORD数据类型的成员,称为RECORD的域(FIELD),其作用是存放互不相同但逻辑相关的信息。 当使用PL/SQL记录是,既可以自定义记录类型和记录变量,也可以使用%ROWTYPE属性定义记录变量。,%ROWTYPE记录类型,2,使用%TYPE可以使变量获得字段的数据类型 使用%ROWTYPE可以使变量获得整个记录的数据类型。 %ROWTY

9、PE属性用于基于表或视图定义记录变量。 示例:通过定义雇员表的记录类型变量,演示%ROWTYPE的使用。,自定义PL/SQL记录类型,2,自定义记录类型的语法格式如下:示例:使用替换变量输入员工号,输出当前员工的相关信息, 其中员工的信息使用记录类型进行存储,TYPE record_type IS RECORD( Field1 type NOT NULL := exp1 , Field2 type NOT NULL := exp2 ,Fieldn type NOT NULL := expn ) ;,record_type是新建的记录类型; Field用于定义记录成员; type指明Filed的

10、数据类型。,集合类型,2,ORACLE在PL/SQL中复合类型有记录类型和集合类型。 常用的集合类型如下: PL/SQL一维表 PL/SQL多维表 嵌套表 可变数组 集合方法,PL/SQL一维表,2,PL/SQL表,或者称为索引表(index-table),是在PL/SQL中能够模仿数组的非永久表。 语法格式如下:type_name是创建的PL/SQL表类型的名称; type用于指定PL/SQL表的数据类型; NOT NULL表示不允许引用null元素; key_type用于指定PL/SQL表下标的数据类型,可以是BINARY_INTEGER、PLS_INTEGER或VARCHAR2。 示例:

11、,TYPE type_name IS TABLE OF type NOT NULL INDEX BY key_type;,PL/SQL多维表,2,在定义PL/SQL表类型时,还可以为其指定数据类型为记录类型,这样定义的表类型就相当于多维数组,即多维表结构,也称记录表结构。 语法格式如下:tableName是表名; type用于指定PL/SQL表的数据类型; NOT NULL表示不允许引用null元素; key_type用于指定PL/SQL表下标的数据类型,可以是BINARY_INTEGER、PLS_INTEGER或VARCHAR2。 示例: 声明一个多为表来存储数据,TYPE type_nam

12、e IS TABLE OF tableName%ROWTYPE NOT NULL INDEX BY key_type;,可变数组,2,可变数组(VARRAY数组)也是一种集合数据类型,其可以作为表列的数据类型来使用,该集合的下标从1开始,并且元素个数是有限制的 。 语法格式如下:type_name是创建的PL/SQL表类型的名称; type用于指定PL/SQL表的数据类型; NOT NULL表示不允许引用null元素。 示例声明一个可变数组来存储数据,TYPE type_name IS VARRAY(size) OF type NOT NULL;,集合方法,2,运算符与表达式,2,PL/SQL

13、中常用的操作符分为以下几类: 算术运算符 关系运算符 逻辑运算符,算数运算符,2,常用的算数运算符如下:,关系运算符,2,常用的关系运算符如下:,逻辑运算符,2,常用的逻辑运算符如下:,流程控制语句,2,PL/SQL不仅可以嵌入SQL语句,有完善的数据类型和运算符,还可以使用如下流程控制语句。 条件分支语句 CASE语句 循环语句 GOTO语句,条件分支语句,2,PL/SQL中提供了3种条件分支语句: IF-THEN IF-THEN-ELSE IF-THEN-ELSIF,IF-THEN语句,2,IF-THEN语句用于执行简单的条件判断。如果布尔表达式返回为TRUE,则会执行THEN后的相应操作

14、;如果布尔表达式返回为FALSE或NULL,则退出条件分支语句。其语法结构如下:示例代码如下:,IF THENPL/SQL 和 SQL语句 END IF;,DECLAREv_num1 NUMBER;v_num2 NUMBER; BEGINv_num1 := ,IF-THEN-ELSE,2,IF-THEN-ELSE是二重分支语句。当使用二重条件分支时,如果布尔表达式返回为TRUE,则会执行THEN后的相应操作;如果布尔表达式返回为FALSE或NULL,则执行ELSE后的相应操作。其语法结构如下: 示例代码如下:,IF THENPL/SQL 和 SQL语句 END IF;,DECLAREv_num

15、1 NUMBER;v_num2 NUMBER; BEGINv_num1 := ,IF-THEN-ELSIF,2,IF-THEN-ELSIF是多重分支语句。当使用多重条件分支时,如果第一个布尔表达式返回为TRUE,则会执行第一个THEN后的操作;如果第一个布尔表达式返回为FALSE或NULL,则会判断第二个布尔表达式(ELSIF);如果第二个布尔表达式返回为TRUE,则会执行第二个THEN后的操作;依此类推,如果所有条件都为FALSE或NULL,则会执行ELSE后的操作。其语法结构如下:,IF THENPL/SQL 和 SQL语句 END IF;,CASE语句,2,在ORACLE10g中,开发人

16、员可以使用CASE语句实现多重分支语句。相对于IF-THEN-ELSIF,该语句更加简洁,且执行效率更高。其语法结构如下:,CASE selectorWHEN expression1 THEN result1;WHEN expression2 THEN result2;WHEN expressionN THEN resultN;ELSE resultN+1 END;,CASE语句,2,在ORACLE10g中,开发人员可以使用CASE语句实现多重分支语句。相对于IF-THEN-ELSIF,该语句更加简洁,且执行效率更高。其语法结构如下:,CASE selectorWHEN expression1

17、 THEN result1;WHEN expression2 THEN result2;WHEN expressionN THEN resultN;ELSE resultN+1 END;,selector是条件选择符;expression是指定的条件表达式。,简单循环,2,在PL/SQL中,可以使用LOOP语句实现简单的循环操作。其语法结构如下:,LOOPPL/SQL 和 SQL语句EXIT WHEN /*条件满足,退出循环语句*/ END LOOP;,当使用LOOP语句进行循环操作时,无论条件是否满足,语句块至少被执行一次,并且当布尔表达式为TRUE时会退出循环。,WHILE循环,2,WHI

18、LE循环用于根据布尔表达式的返回值确定是否要执行循环体的语句,这种循环以WHILELOOP开始,以END LOOP结束,其语法结构如下:,WHILE LOOPPL/SQL 和 SQL语句; END LOOP;,在使用WHILE语句实现循环时,当布尔表达式返回为TRUE时,会执行循环体的语句;当布尔表达式返回为FALSE或NULL时,会退出循环并执行END LOOP后的操作。,FOR循环,2,ORACLE还提供了一种FOR循环结构,使用FOR循环结构可以不需定义循环控制变量,ORACLE会隐含定义循环控制变量。其语法结构如下:,FOR 循环控制变量 IN REVERSE 下限 上限 LOOPPL

19、/SQL 和 SQL语句; END LOOP;,在使用FOR语句实现循环时,每循环一次,循环变量自动加1;如果指定关键字REVERSE,循环变量则自动减1;跟在IN REVERSE后面的用于标注上限和下限的数字必须是从小到大的顺序,而且必须是整数,不能是变量或表达式。在FOR语句中可以使用EXIT退出循环。,GOTO语句,2,除了条件分支语句和循环语句,PL/SQL还提供了GOTO语句。GOTO语句用于跳转到指定标号处继续执行语句。其语法结构如下:,GOTO label; /*标号是用括起来的标识符 */,label是已经定义的标号名。标号后至少要包含一条可执行语句。,使用GOTO语句会增加程序的复杂性,降低程序的可读性,一般不建议使用GOTO语句。,PL/SQL块结构由定义部分、执行部分和异常处理部分组成 PL/SQL块结构分为匿名块、命名块、子程序和触发器4类 复合数据类型包括记录、表和变长组等类型 运算符包括数值、字符、关系和逻辑四种运算符 PL/SQL程序控制语句包括条件语句、CASE语句和循环语句,15,小结,谢 谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报