首批通过分布式安全可靠测评,为关键业务系统打造
PL 编译和调试
更新时间:2026-04-13 14:20:55
背景信息
PL 是一种过程化程序语言(Procedural Language,PL)。是对 SQL 的扩展,在普通 SQL 语句的基础上增加了编程语言的特点,将数据操作和查询语句组织在 PL 代码的过程化代码中,通过逻辑判断、循环等操作实现复杂的功能。
使用 PL 可以编写具有高级功能的程序,能够将业务逻辑封装在数据库内部,提供更好的抽象性和安全性,同时减少了网络的交互,调用速度更快,从而提升整体性能。
PL 程序的开发工作是数据库服务开发人员重要的日常工作,与 SQL 语句的支持模块类似,PL 的调试模块同样为非常重要的功能。因此,在编程过程中,开发人员需要一个PL 开发区域和调试功能。
PL 语句可用于编写函数、存储过程、程序包和触发器等数据库对象。
ODC V2.2.0 及之后版本支持 PL 对象和匿名块的创建、编译、运行和调试等功能。用户可在匿名块窗口的编辑区域中编译 PL 语句,同时可对已创建的 PL 对象进行编辑和调试等操作。建议使用 ODC 最新版本以获得更好的体验。
前提条件
OceanBase V2.2.73 及之后的版本支持 PL 调试功能,建议使用最新版本或者 OceanBase V3.2.3 及之后的版本。
连接至 OB Cloud 云数据库的实例不支持 PL 调试功能。
PL 调试需要直连 OBServer。使用 ODC V3.2.2 之后的版本并通过 OBProxy 连接时,ODC 内部会尝试直连 OBServer,如果 ODC 和 OBServer 直连的网络连接成功,则同样可以进行 PL 调试。
调试前,请确保连接的数据库中已安装 DBMS_DEBUG 和 DBMS_OUTPUT 等调试包。
OceanBase V4.0.0 及之后的版本,需要获取调试权限。调试前,请配置调试权限:
GRANT DEBUG CONNECT SESSION TO <user>; GRANT DEBUG ANY PROCEDURE TO <user>;
PL 编译
示例:在 GSH 数据库中创建存储过程 PROC_VARCHAR2。
在 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;在 SQL 开发窗口的左侧导航栏 > 存储过程列表中,选择 编译 存储过程 PROC_VARCHAR2。

编译 PL 语句并查看编译结果。

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

设置参数值后,单击 确定。
注意
OceanBase V4.0.0 及之后的版本,调试前需要获取调试权限。示例:
GRANT DEBUG CONNECT SESSION TO GSH; GRANT DEBUG ANY PROCEDURE TO GSH;
进入调试页面,单击批量执行,运行 PL 语句。
