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: 对于过程调用, 不跟踪过程体,仅跟踪过程的输入和返回值。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
-- 被调用的函数
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

执行存储过程

1
2
3
4
5
6
7
[gbasedbt@localhost tmp]$ dbaccess mydb -
 
Database selected.
 
> execute procedure testproc();
 
Routine executed.

查看跟踪文件,跟踪被调用的存储过程,仅跟踪输入、输出值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[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

添加新评论