1、PL/SQL概述
PL/SQL编程语言由Oracle公司在20世纪80年代末由SQL和Oracle关系数据库的程序扩展语言开发。以下是有关PL/SQL的一些重要事实 -
- PL/SQL是一种完全可移植的,高性能的事务处理语言。
- PL/SQL提供了一个内置的,解释的和独立于操作系统的编程环境。
- 可以从命令行
SQL * Plus
界面直接调用PL/SQL。 - 直接调用也可以从外部编程语言调用到数据库中的对象(函数或过程等)。
- PL/SQL通用语法基于
ADA
和Pascal
编程语言。 - 除Oracle之外,PL/SQL还可用于TimesTen内存数据库和IBM DB2。
PL/SQL的特点
PL/SQL具有以下特点 -
- PL/SQL与SQL紧密集成。
- 它提供广泛的错误检查。
- 它提供了许多数据类型。
- 它提供了各种编程结构。
- 它通过函数和过程支持结构化编程。
- 它支持面向对象编程。
- 它支持Web应用程序和服务器页面的开发。
PL/SQL的优点
PL/SQL具有以下优点 -
- SQL是标准数据库语言,PL/SQL与SQL强大集成。 PL/SQL支持静态和动态SQL。 静态SQL支持来自PL/SQL块的DML操作和事务控制。在动态SQL中,SQL允许在PL/SQL块中嵌入DDL语句。
- PL/SQL允许一次将整个语句块发送到数据库。这样可以减少网络流量,为应用程序提供高性能。
- PL/SQL可以为程序员提供高效的生产力,因为它可以在数据库中查询,转换和更新数据。
- PL/SQL通过强大的功能(例如:异常处理,封装,数据隐藏和面向对象的数据类型),节省了设计和调试时间。
- 使用PL/SQL编写的应用程序完全可移植。
- PL/SQL提供了高安全级别。
- PL/SQL提供对预定义SQL包的访问。
- PL/SQL提供对面向对象编程的支持。
- PL/SQL支持开发Web应用程序和服务器页面。
2、PL/SQL基本语法
PL/SQL是块结构语言; 这意味着PL/SQL程序被划分成几个部分,并在每个部分中写入逻辑代码块。每个块由三个子部分组成 -
- 声明部分 - 此部分是以关键字
DECLARE
开头。这是一个可选部分,并定义了程序中要使用的所有变量,游标,子程序和其他元素。 - 可执行命令部分 - 此部分包含在关键字
BEGIN
和END
之间,这是一个强制性部分。它由程序的可执行PL/SQL语句组成。它应该有至少一个可执行代码行,它可以只是一个NULL
命令,表示不执行任何操作。 - 异常处理部分 - 此部分以关键字
EXCEPTION
开头。这是一个可选部分,它包含处理程序中错误的异常。
每个PL/SQL语句以分号(;
)结尾。 使用BEGIN
和END
可以将PL/SQL块嵌套在其他PL/SQL块中。 以下是PL/SQL块的基本结构 -
DECLARE
<declarations section>
BEGIN
<executable command(s)>
EXCEPTION
<exception handling>
END;
Hello World示例
SQL> declare
2 msg varchar2(20):='Hello World!';
3 begin
4 dbms_output.put_line(msg);
5 end;
6 /
Hello World!
PL/SQL procedure successfully completed
END;
行表示PL/SQL块的结尾。要从SQL命令行运行代码,需要在代码的最后一行之后键入/
字符。
PL/SQL标识符
PL/SQL标识符是常量,变量,异常,过程,游标和保留字。标识符包括一个字母,可选地后跟多个字母,数字,美元符号,下划线和数字符号,不得超过30
个字符。
默认情况下,标识符不区分大小写。例如,可以使用integer
或INTEGER
来表示一个数值。 不能使用保留关键字作为标识符。
PL/SQL分隔符
分隔符是具有特殊含义的符号。以下是PL/SQL中的分隔符列表 -
分隔符 | 描述 |
---|---|
+ ,- , * , / | 加法,减法/负,乘法,除法 |
% | 属性绑定 |
' | 字符串分隔符 |
. | 组件选择符 |
(,) | 表达式或列表分隔符 |
: | 主机变量指示符 |
, | 项目分隔符 |
" | 引用标识符分隔符 |
= | 关系运算符 |
@ | 远程访问指示符 |
; | 声明或语句终止符 |
:= | 赋值运算符 |
=> | 关联运算符 |
连接运算符 | |
** | 指数运算符 |
<< , >> | 标签分隔符(开始和结束) |
/* , */ | 多行注释分隔符(开始和结束) |
-- | 单行注释指示符 |
.. | 范围运算符 |
< , > , <= , >= | 关系运算符 |
<> , '= , ~= , ^= | 不同版本的”不等于”运算符 |
PL/SQL注释
程序注释可以在编写的PL/SQL代码中包含的说明性文字,并帮助其他人阅读源代码。所有编程语言都允许某种形式的注释。
PL/SQL支持单行和多行注释。注释中的所有字符都被PL/SQL编译器忽略。 PL/SQL单行注释以分隔符开头 --
(双连字符),多行注释由/*
和*/
括起来。
SQL> DECLARE
2 -- variable declaration
3 message varchar2(20):= 'Hello, World!';
4 BEGIN
5 /*
6 * PL/SQL executable statement(s)
7 */
8 dbms_output.put_line(message);
9 END;
10 /
Hello, World!
PL/SQL procedure successfully completed
PL/SQL程序单元
PL/SQL单元是以下任何一个 -
- PL/SQL块
- 函数
- 包
- 包体
- 过程
- 触发器
- 类型
- 类型体