---
title: "PL 编译和调试 - 开发者中心 ODC V4.2.3 | OceanBase 文档中心"
description: PL 编译和调试 背景信息 PL 是一种过程化程序语言（Procedural Language，PL）。是对 SQL 的扩展，在普通 SQL 语句的基础上增加了编程语言的特点，将数据操作和查询语句组织在 PL 代码的过程化代码中，通过逻辑判断、循环等操作实现复杂的功能。 使用 PL 可以编写具有高级功能的程序，能够将…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*lqS5SYzz_YEAAAAAAAAAAAAADiGDAQ/original) 开发者中心 ODCV 4.2.3

# PL 编译和调试

更新时间：2026-04-13 15:31:14

[编辑](https://github.com/oceanbase/odc-doc/edit/V4.2.3/zh-CN/500.sql-development/200.pl-compile-and-debug.md)  

## 背景信息

PL 是一种过程化程序语言（Procedural Language，PL）。是对 SQL 的扩展，在普通 SQL 语句的基础上增加了编程语言的特点，将数据操作和查询语句组织在 PL 代码的过程化代码中，通过逻辑判断、循环等操作实现复杂的功能。

使用 PL 可以编写具有高级功能的程序，能够将业务逻辑封装在数据库内部，提供更好的抽象性和安全性，同时减少了网络的交互，调用速度更快，从而提升整体性能。

PL 程序的开发工作是数据库服务开发人员重要的日常工作，与 SQL 语句的支持模块类似，PL 的调试模块同样为非常重要的功能。因此，在编程过程中，开发人员需要一个PL 开发区域和调试功能。

PL 语句可用于编写函数、存储过程、程序包和触发器等数据库对象。

ODC V2.2.0 及之后版本支持 PL 对象和匿名块的创建、编译、运行和调试等功能。用户可在匿名块窗口的编辑区域中编译 PL 语句，同时可对已创建的 PL 对象进行编辑和调试等操作。建议使用 ODC 最新版本以获得更好的体验。

## 前提条件

ODC PL 支持现状

| 功能 | 支持的对象 | 支持的数据源 | 支持版本 |
| --- | --- | --- | --- |
| 编译 | 函数/存储过程/程序包 | OceanBase Oracle、OB Cloud Oracle | V2.2.7x、V3.0.0 及之后版本。 |
| 调试 | 函数/存储过程/匿名块 | OceanBase Oracle | V3.2.3 及之后版本。 |
| 运行 | 函数/存储过程 | OceanBase Oracle、OB Cloud Oracle、OceanBase MySQL、OB Cloud MySQL | V2.0.x 及之后版本。 |
|  | 函数/存储过程 | MySQL | V5.7 |
| 运行 | 程序包/匿名块 | OceanBase Oracle、OB Cloud Oracle | V2.0.x 及之后版本。 |

同时需要注意：

- 若数据源为 OceanBase，有且仅能通过 OBProxy 连接，该实例将不支持调试。
 - 匿名块窗口仅在 OceanBase Oracle/OB Cloud Oracle 数据源提供。
 - ODC V3.2.3 之前版本不支持在 arm 架构下进行调试。

## PL 编译

示例：在 GshH 数据库中创建存储过程 PROC_VARCHAR2。

1. 在 SQL 窗口中创建存储过程。

   ![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/422/500.sql-development/200.pl-compile-and-debug/1.png)

   ```sql
   CREATE OR REPLACE PROCEDURE PROC_VARCHAR2(p1 in VARCHAR2, p2 out VARCHAR2, p3 in out VARCHAR2)
   as
   v1 varchar2(64) := 'hello,oceanbase';
   begin
   dbms_output.put_line(p1);
   dbms_output.put_line(p3);
    p2 := 'hello,odc';
   end;

   ```
 2. 在 SQL 开发窗口的左侧导航栏 > 存储过程列表中，选择 **编译** 存储过程 PROC_VARCHAR2。

   ![2](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/422/500.sql-development/200.pl-compile-and-debug/2.png)
 3. 编译 PL 语句并查看编译结果。

   ![3](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/422/500.sql-development/200.pl-compile-and-debug/3.png)

## PL 调试

1. 在 SQL 开发窗口的左侧导航栏 > 存储过程列表中，选择调试存储过程 PROC_VARCHAR2，进入调试模式。

   ![4](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/422/500.sql-development/200.pl-compile-and-debug/4.png)
 2. 设置参数值后，单击 **确定**。

   #### 注意

   OceanBase V4.0.0 及之后的版本，调试前需要获取调试权限。示例：` GRANT DEBUG CONNECT SESSION TO GSH; GRANT DEBUG ANY PROCEDURE TO GSH;`

   ![5](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/422/500.sql-development/200.pl-compile-and-debug/5.png)
 3. 进入调试页面，单击批量执行，运行 PL 语句。

   ![6](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/422/500.sql-development/200.pl-compile-and-debug/6.png)

## 相关文档

- [SQL 编辑和执行](https://www.oceanbase.com/docs/common-odc-1000000000468276)
 - [命令行窗口](https://www.oceanbase.com/docs/common-odc-1000000000468273)
 - [结果编辑与导出](https://www.oceanbase.com/docs/common-odc-1000000000468277)
 - [执行分析](https://www.oceanbase.com/docs/common-odc-1000000000468279)
 - [生成测试数据](https://www.oceanbase.com/docs/common-odc-1000000000468278)
 - [数据库变更管理](https://www.oceanbase.com/docs/common-odc-1000000000468288)
 - [分区管理](https://www.oceanbase.com/docs/common-odc-1000000000468272)
 - [影子表同步](https://www.oceanbase.com/docs/common-odc-1000000000468290)
 - [无锁结构变更](https://www.oceanbase.com/docs/common-odc-1000000000468289)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
