PL/SQL(Procedural Language extensions to SQL)是Oracle 对标准 SQL 语言的过程化扩展,是专门用于各种环境下对 Oracle 数据库进行访问和开发的语言。
一、概述
Oracle数据库对标准的SQL 语言进行了扩展,将 SQL 语言的非过程化与第三代开发语言的过程化相结合,产生了 PL/SQL 语言。在 PL/SQL 语言中,既可以通过SQL 语言实现对数据库的操作,也可以通过过程化语言中的复杂逻辑结构完成复杂的业务逻辑。
在PL/SQL程序中,引入了变量、控制结构、函数、过程、包、触发器等一系列数据库对象,为进行复杂的数据库应用程序开发提供了可能。
特点:
[1] 与SQL语言紧密集成,支持SQL语句;
[2] 减少网络流量,提高应用程序的运行性能;
[3] 模块化程序设计功能,提高了系统可靠性;
[4] 服务器端程序设计,可移植性好。
二、PL/SQL程序结构
1、PL/SQL块的组成
PL/SQL程序的基本单元室语句块。一个完整的语句块由三部分组成:
DECLARE
声明部分,定义变量、数据类型、异常、局部子程序等
BEGIN
执行部分,实现块的功能
EXCEPTION
异常处理部分,处理程序执行过程中产生的异常
END
注意:
[1] 执行部分是必须的,声明和异常是可选的;
[2] 可以在执行或异常处理部分嵌套其他的PL/SQL块;
[3] 所有的块都是以“ END; ”结束的;
2、块的分类
匿名块:动态生成,只能执行一次的块,不能由其他应用程序调用;
命名块:一次编译可多次执行的PL/SQL程序,包括函数、存储过程、包、触发器等。他们编译后放在服务器中,由应用程序或系统在特定条件下调用执行。
三、词法单元
所有PL/SQL程序都由词法单元构成,所谓词法单元就是一个字符序列,字符序列中的字符取自PL/SQL语言所允许的字符集。PL/SQL中的词法单元包括标识符、分隔符、常量值、注释等。
1、字符集
字符集包括如下:
[1] 所有大小写字母:包括A~Z,和 a~z;
[2] 数字:包括0~9;
[3] 空白符:包括制表符、空格和回车符;
[4] 符号:+、-、*、/、<、>、=、~、!、@、#、$、%、^、&、(、)、_、|、{、}、[、]、?、;、:、,、.、"、'。
注:字符集不区分大小写。
2、标识符
标识符用于定义PL/SQL变量、常量、异常、游标名称、游标变量、参数、子程序名称和其他的程序单元名称等。
标识符是以字母开头的,后边可以跟字母、数字、美元符号($)、井号(#)或下划线(_),其最大长度为30个字符,并且所有字符都是有效的。
注意:如果标识符区分大小写、使用预留关键字或包含空格等特殊符号时,需用""括起来,称为引证标识符。
3、分隔符
分隔符是指有特定含义的单个符号或组合符号。
4、常量值
常量是指不能作为标识符的字符型、数字型、日期型和布尔型值。
[1] 字符型:即以单引号引起来的字符串,在字符串中的字符区分大小写。如果字符串本身包含单引号,则用两个连续的单引号进行转义。如'he''s book'。
[2] 数字型:分为整数与实数两类。
[3] 布尔型:指预定义的布尔型变量的取值,包括 TRUE、FALSE、NULL三个值。
[4] 日期型:表示日期值,其格式随日期类型格式不同而不同。
5、注释
单行注释:以“--”开始,直到该行结尾;
多行注释:以“/*”开始,以“*/”结束。
四、数据类型