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 |