PL/SQL 基本语法
📄字数 1.2K
👁️阅读量 加载中...
PL/SQL 语法结构
PL/SQL 的程序结构由三部分组成:声明部分、可执行部分以及异常处理部分。
主要结构说明
每个 PL/SQL 语句以分号结尾,使用 BEGIN 和 END 可以将 PL/SQL 块嵌套在其他 PL/SQL 块中,以下是 PL/SQL 块的基本结构。
sql
DECLARE
-- 声明部分(可选)
<declarations section>
BEGIN
-- 可执行部分
<executable command(s)>
EXCEPTION
-- 异常处理部分(可选)
<exception handling>
END;
示例
示例1
PL/SQL块的基本结构演示。
sqlSQL> DECLARE str VARCHAR; BEGIN NULL; END; /
提示
- 在 xgconsole 控制台执行时,匿名语句块最后需要添加
/
标识结束,在其他管理工具执行时无需添加/
。 - PL/SQL 语言有着较强的结构性限制,存在 BEGIN 时必须对应一个 END 标识结束。分支语句或嵌套语句块也需要明确的 END 标识。
- 使用较多的逻辑嵌套时,需要注意逻辑递进关系。执行区域的操作都需以分号结尾。
PL/SQL标识符
在 PL/SQL 中,标识符(Identifiers)是用于命名各种数据库对象(如变量、常量、过程、函数、游标等)的符号。以下是关于 PL/SQL 标识符的详细介绍:
标识符命名规则
- 合法字符:字母(A-Z、a-z)、数字(0-9)、下划线(_)、美元符号($)、中文。
- 首字符限制:必须以字母、中文或特殊字符开头,不能是数字。
- 长度限制:最多 127 个字节。
- 大小写敏感性:默认不区分大小写(如 EMP_ID 和 emp_id 视为相同),但使用双引号(")可强制区分。
- 保留字冲突:不能使用 PL/SQL 保留字(如 SELECT、IF、BEGIN 等),除非加双引号(不推荐)。
作用域与可见性
- 全局变量:在包头中声明,整个包内可见。
- 局部变量:在存储过程、函数或匿名块中声明,仅在块内可见。
- 嵌套块:内部块可访问外部块的变量,但外部块无法访问内部块的变量。
PL/SQL分隔符
在 PL/SQL 中,分隔符是具有特殊含义的符号。以下是 PL/SQL 中的分隔符列表:
分隔符 | 描述 |
---|---|
+, -, *, / | 加法(正号)、减法(负号)、乘法、除法 |
% | 属性指示符 |
' | 字符串定界符 |
. | 组件选择器 |
(,) | 表达式或列表分隔符 |
, | 项目分隔符 |
" | 带引号的标识符分隔符 |
@ | 远程访问指示符 |
; | 语句终止符 |
:= | 赋值运算符 |
=> | 关联运算符 |
|| | 连接运算符 |
<<,>> | 标签分隔符(开始和结束) |
/*,*/ | 多行注释分隔符(开始和结束) |
-- | 单行注释指示符 |
.. | 范围运算符 |
<, >, <=, >=, = | 关系运算符 |
<>, != | 不同版本的 NOT EQUAL |
提示
- PL/SQL 中运算符与SQL中运算符使用基本一致,详见运算符文档。
PL/SQL注释
PL/SQL 支持单行和多行注释,PL/SQL 编译器会忽略任何注释中可用的所有字符;单行注释以分隔符--
(双短横线)开头,到行尾结束;多行注释用/*
和*/
包裹起来。
示例
示例2
PL/SQL注释使用演示。
sqlSQL> DECLARE -- 单行注释 str VARCHAR; BEGIN /* * 多行注释 */ NULL; END; /
PL/SQL程序单元
PL/SQL 单元是以下任意一种:
- PL/SQL 匿名块:即直接以 DECLARE 或 BEGIN 开始的程序块。
- 存储过程
- 存储函数
- 触发器
- 包:包含包头和包体。
- 自定义类型:包含类型头和类型体。
这些单元中的每一个都将在后续内容中介绍。