GBase 8s 存储过程跟踪示例
TRACE语句用于调试存储过程, 它可以跟踪以下存储过程实体的值:
变量(Variables)
过程参数(Procedure arguments)
返回值(Return values)
SQL 错误代码(SQL error codes)
ISAM 错误代码(ISAM error codes)
TRACE 语句把跟踪结果写到一个文件中, 该文件由SQL语句SET DEBUG FILE指定
TRACE 语句的三种形式:
TRACE ON :打开跟踪调试, 跟踪所有语句
TRACE OFF :关闭跟踪调试
TRACE PROCEDURE: 对于过程调用, 不跟踪过程体,仅跟踪过程的输入和返回值。
示例:
-- 被调用的函数
DROP FUNCTION IF EXISTS test2;
CREATE FUNCTION test2() RETURNS int;
return 100;
END FUNCTION;
-- 跟踪的存储过程
DROP PROCEDURE IF EXISTS testproc;
CREATE PROCEDURE testproc()
DEFINE i INT;
SET DEBUG FILE TO '/tmp/test.trace';
TRACE OFF;
TRACE 'Entering foo';
-- 跟踪存储过程
TRACE PROCEDURE;
LET i = test2();
TRACE ON;
LET i = i + 1;
TRACE OFF;
TRACE 'i+1 = ' || i+1;
TRACE 'Exiting testproc';
END PROCEDURE
执行存储过程
[gbasedbt@localhost tmp]$ dbaccess mydb -
Database selected.
> execute procedure testproc();
Routine executed.
查看跟踪文件,跟踪被调用的存储过程,仅跟踪输入、输出值
[gbasedbt@localhost tmp]$ more test.trace
trace off
trace expression :Entering foo
trace procedure
execute function gbasedbt.test2[procid=576] ()
procedure test2 returns 100
trace on
expression:(+ i, 1)
evaluates to 101
let i = 101
trace off
trace expression :i+1 = 102
trace expression :Exiting testproc