GBase 8c存储过程调试接口使用指南

发布时间:2026/5/21 17:30:14

GBase 8c存储过程调试接口使用指南 本文针对南大通用 GBase 8c 数据库围绕存储过程的使用与问题定位基于 DBE_PLDEBUGGER 调试接口详细说明存储过程调试的核心接口、标准流程、常用命令与完整实战操作步骤帮助用户快速掌握调试方法高效定位与解决存储过程运行异常。1 存储过程介绍1.1 定义存储过程是一组完成特定功能的 SQL 语句集合经编译后存储在数据库中用户通过指定名称与参数调用执行。1.2 优点​执行效率高​一次编译、多次执行减少网络与解析开销。​减少网络传输​在数据库服务器端执行降低应用与数据库交互量。​业务逻辑封装​复杂逻辑封装便于维护与复用。​安全性高​屏蔽基础表防止 SQL 注入控制权限。​过程化控制​支持条件、循环等流程控制。2 调试接口与流程2.1 核心调试接口DBE_PLDEBUGGER接口名称执行端功能说明turn_on服务端开启存储过程调试执行时挂起等待调试turn_off服务端关闭存储过程调试local_debug_server_info服务端查看本会话已开启调试的存储过程attach调试端绑定到待调试存储过程info_locals调试端查看所有变量值print_var调试端查看指定变量值set_var调试端修改变量值next调试端单步执行不进入子过程step调试端单步进入进入子过程continue调试端执行至断点或结束abort调试端强制终止调试add_breakpoint调试端添加断点delete_breakpoint调试端删除断点info_breakpoints调试端查看断点info_code两端查看存储过程源码与行号2.2 标准调试流程创建测试表与存储过程查询存储过程 OID服务端执行 turn_on 开启调试服务端调用存储过程挂起调试端 attach 绑定调试会话单步 / 断点 / 变量查看与修改调试结束执行 abort/continue最后 turn_off 关闭调试3 调试3.1 准备环境DROP TABLE IF EXISTS t1;CREATE TABLE t1(c1 int);INSERT INTO t1 (c1) SELECT generate_series(1,20);​3.2 创建存储过程CREATE OR REPLACE PROCEDURE proc_selectCur() AS declare cursor cur1 is select * from t1; BEGIN for i in cur1 loop raise notice %,i.c1; DELETE FROM t1 WHERE c1 i.c1; end loop; END; /​3.3 获取 OIDSELECT OID FROM PG_PROC WHERE PRONAMEproc_selectcur;​3.4 开启调试-- 服务端 SELECT * FROM DBE_PLDEBUGGER.turn_on(32168);call proc_selectcur();​-- 调试端 SELECT * FROM DBE_PLDEBUGGER.attach(dn_6001_6002,0);​3.5 调试操作-- 单步SELECT * FROM DBE_PLDEBUGGER.next();​-- 查看所有变量 SELECT * FROM DBE_PLDEBUGGER.info_locals();​-- 查看指定变量 SELECT * FROM DBE_PLDEBUGGER.print_var(i);​-- 查看源码 SELECT * FROM DBE_PLDEBUGGER.info_code(82965);​-- 添加断点 SELECT * FROM DBE_PLDEBUGGER.add_breakpoint(82965,5);​-- 执行到断点 SELECT * FROM DBE_PLDEBUGGER.continue();​-- 终止调试 SELECT * FROM DBE_PLDEBUGGER.abort();​-- 关闭调试 SELECT * FROM DBE_PLDEBUGGER.turn_off(32168);​

相关新闻