Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


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块的基本结构演示。

    sql
    SQL> 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注释使用演示。

    sql
    SQL> DECLARE
             -- 单行注释
             str VARCHAR;
         BEGIN
             /* 
              * 多行注释
              */
             NULL;
         END;
         /

PL/SQL程序单元

PL/SQL 单元是以下任意一种:

  • PL/SQL 匿名块:即直接以 DECLARE 或 BEGIN 开始的程序块。
  • 存储过程
  • 存储函数
  • 触发器
  • 包:包含包头和包体。
  • 自定义类型:包含类型头和类型体。

这些单元中的每一个都将在后续内容中介绍。