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

标签: 存储过程, trace on, trace procedure

添加新评论