全部产品
Search
文档中心

云数据库 OceanBase:PL 编译和调试

更新时间:Aug 07, 2024

背景信息

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

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

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

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

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

本文档以创建 OceanBase Oracle 类型的存储过程为例,在数据库 GSH 中创建存储过程 PROC_VARCHAR2。

说明

文中所使用的均为示例数据,您可根据实际情况对数据进行替换。

前提条件

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 编译

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

    image.png

    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。

    image.png

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

    image.png

PL 调试

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

    image.png

  2. 设置参数值后,单击 确定

    重要

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

    image.png

  3. 进入调试页面,单击批量执行,运行 PL 语句。

    image.png

相关文档