《Oracle数据库应用》理论课
使用PL/SQL
⏹本章技能目标
◆理解PL/SQL 功能和特点
◆了解数据类型及其用法
◆理解逻辑比较
◆理解控制结构
◆掌握错误处理
1.PL/SQL 简介
PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言。
PL/SQL 是对SQL 的扩展。PL/SQL支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构。
PL/SQL可用于创建存储过程、触发器和程序包,给SQL语句的执行添加程序逻辑。
PL/SQL与Oracle 服务器和Oracle 工具紧密集成,具备可移植性、灵活性和安全性。
1.1PL/SQL 的优点
PL/SQL是一种可以移植的高性能事务处理语言,它支持SQL和面向对象编程,提供了良好的性能和高效的处理能力。PL/SQL的优点包括:
支持SQL
SQL是访问数据库德标准语言,通过使用SQL命令,用户可以轻松地操作存储在关系数据库中的数据。
在PL/SQL 中可以使用:数据操纵命令,事务控制命令,游标控制,SQL 函数和SQL 运算符和伪列。
PL/SQL还支持动态SQL,这种高级的编程技术使应用程序更加灵活,可以在程序运行过程中动态构造和运行各种SQL命令。
支持面向对象编程(OOP)
面向对象编程以对象为中心,对象是构建面向对象应用程序的基本部分。使用OOP开发应用程序大大减少了建立复杂应用程序所需的成本和时间。对象类型是面向对象的理想建模工具,允许属于不同组的开发人员同时开发软件组件。PL/SQL全面支持面向对象的编程。
2
可移植性,可运行在任何操作系统和平台上的Oralce 数据库
使用PL/SQL 编写的应用程序可移植到安装任何操作系统或平台的Oracle 服务器上,还可以编写可移植程序库,在不同的环境中重用。
更佳的性能,PL/SQL 经过编译执行
SQL 是一种非过程语言,在此语言中一次只能执行一条语句,因此在连续的语句之间没有关联。使用PL/SQL 则可以一次处理整个语句块。这减少了在应用程序和Oracle 服务器之间进行通信所花费的时间,从而提高了性能。过程调用是快速而高效的 ,因为PL/SQL 存储过程编译一次后,是以可执行的形式存储的。
与 SQL 紧密集成,简化数据处理。
支持所有 SQL 数据类型,支持 NULL 值。简化了对Oracle 数据的操作,支持 %TYPE 和 %ROWTYPE 属性类型更加强了这种集成。
安全性,可以通过存储过程限制用户对数据的访问
可以通过PL/SQL 存储过程对客户机和服务器之间的应用程序分隔,这样就可以阻止客户应用程序操纵敏感的数据。可以限制对Oracle 数据的访问。其方法是仅允许用户通过存储过程操纵它。
1.2
PL/SQL 的体系结构
PL/SQL 引擎用来编译和执行PL/SQL 块或子程序,该引擎 驻留在Oracle 服务器中。PL/SQL 引擎仅执行过程语句,而将SQL 语句发送给SQL 语句执行器,由SQL 语句执行器执行这些SQL 语句。PL/SQL 体系结构图如下:
PL/SQL 体系结构图
1.3
PL/SQL 块简介
PL/SQL 是一种块结构的语言,它将一组语句放在一个块中。构成PL/SQL 程序的基本单元是逻
3
辑块(如过程,函数或匿名块),该逻辑块可以包含任何数量的嵌套子块,每个逻辑块对应要解决的问题或子问题。PL/SQL 块将逻辑上相关的声明和语句组合在一起,匿名块是一个未在数据库中命名的PL/SQL 块,在运行时被传递到PL/SQL 引擎以便执行。本章只讨论匿名块,命名的PL/SQL 块如过程,函数和程序包在以后的章节中讨论。
在PL/SQL 块中可以使用SELECT ,INSERT ,UPADTE ,DELETE 等DML 语句,事务控制语句以及SQL 函数等。PL/SQL 块中不允许直接使用CREATE ,DROP 或ALTER 等DDL 语句,但可以通过动态SQL 语句来执行它们。
PL/SQL 分为三个部分,声明部分、可执行部分和异常处理部分。
声明部分:声明块中使用的变量,游标和自定义异常。这些声明的作用域仅限于它们所在
的块。此外,局部子程序也可以在PL/SQL 块的声明部分中声明。
可执行部分:执行命令并操作在声明部分的变量和游标。PL/SQL 块的可执行部分可以嵌套
子块。PL/SQL 块的可执行部分是必选项。
异常处理部分:处理执行块时引发的异常。PL/SQL 块的异常处理部分野可以嵌套子块。
sql触发器的使用其中:
declarations 指声明部分。
executable statements 指可执行部分。
exception handlers 指处理错误的代码块。
PL/SQL 是一种编程语言。因此与其它编程语言(如java,Pascal 等)大同小异,下面介绍PL/SQL 一些特殊的语言特征。
PL/SQL 对大小写不敏感,但是用户和用户的开发团队应该选择一个合适的编码标准,以
确保最好地使用共享池。
PL/SQL 中一些复合符号的含义如下:
:=  赋值符号
||  连接字符串
--  单行注释
/*,*/ 多行注释
<<,>> 标签分隔符
..  范围操作符
**  求幂操作符
PL/SQL 块中可以使用变量和常量。在声明部分声明,变量和常量使用前必须先声明。声明时必须指定数据类型,每行声明一个标识符。在可执行部分的 SQL 语句和过程语句中使用。  声明变量
4
声明变量的时候必须制定变量的数据类型,可以在声明变量是进行初始化。
variable_name 表示变量名称
data_type 表示变量的SQL 或PL/SQL 数据类型
size 指定变量的范围
init_value 指变量的初始值。
下面的代码演示了声明变量的用法。
变量的值可以在声明部分初始化,在可执行部分通过赋值语句赋值。
给变量赋值有两种方法:
使用赋值语句 :=
● 使用 SELECT INTO 语句
给变量赋值的语法如下:
下面的代码演示如何给变量赋值。
声明常量
常量在声明时被赋予初始值。
声明常量的语法如下:
5
另外,初始化变量和常量时,可以用保留字DEFAULT 替换赋值操作符(:=).例如:
2. 数据类型及其用法
每个PL/SQL 变量都具有一个指定存储格式,值的有效范围和约束条件的数据类型。PL/SQL 提供了各种内置的数据类型。变量类型可以是V ARCHAR2,INTEGER ,FLOAT ,CHAR ,LONG ,LONG RAW ,RECORD ,引用类型和LOB 类型等。
PL/SQL 提供的4中内置数据类型是:
标量类型
LOB 类型
组合数据类型
引用类型
出允许使用内置数据类型之外,PL/SQL 还允许用户定义自己的子类型和使用属性类型。
下图是在PL/SQL 中可以使用的预定义类型,其中标量类型又分为四类:数字、字符、布尔和日期/时间
6
2.1
标量数据类型
标量数据类型包含单个值,没有内部组件。标量类型又分为四类:数字、字符、布尔和日期/时间。
1. 数字数据类型
数字数据类型存储的数据为数字,用此数据类型存储的数据可用于计算。他类似于SQL 中的NUMBER 数据类型。
数字数据类型包括:BINARY_INTEGER ,NUMBER ,PLS_INTEGER 。
BINARY_INTEGER
我们可以使用BINARY_INTEGER 数据类型来存储有符号整数。它的范围是-2**31至2**31。
PL/SQL 预定义了下面几个BINARY_INTEGER 的子类,子类型在基类型的基础上添加一些约束限制,也可能重新定义数值范围。目的是为了使用方便。
● NATURAL
● NATURALN
● POSITIVE

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。