PL/SQL 之 基础

时间:2022-05-09 21:29:26

  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、注释

  单行注释:以“--”开始,直到该行结尾;

  多行注释:以“/*”开始,以“*/”结束。

四、数据类型