informix存储过程的调试
来源:互联网 发布:网络通信协议的作用 编辑:程序博客网 时间:2024/06/07 04:51
存储过程的调试通常采用两种方法。
1.设置 debug file ,以trace 方式。
2.用return …… with resume 方式调试。
例:1
create procedure getday(t_day date,t_int int ,t_flag char(10)) returning date;
define i int;
define tt_day date;
DEFINE ESQL,EISAM INT;
DEFINE ETEXT CHAR(80);
Set debug file to “sun.tmp”;
let tt_day="18991231";
let i=0;
if t_flag="year" then
while 1=1
on exception in(-1267)
let i=i+1;
end exception ;
let tt_day=t_day-i;
let tt_day=tt_day+t_int units year;
trace tt_day;
exit while;
end while;
elif t_flag="month" then
while 1=1
on exception in(-1267)
let i=i+1;
end exception ;
let tt_day=t_day-i;
let tt_day=tt_day+t_int units month;
trace tt_day;
exit while;
end while;
elif t_flag="day" then
let tt_day=t_day+t_int units day;
else
let tt_day=t_day;
end if;
return tt_day;
end procedure;
例:2
create procedure getday(t_day date,t_int int ,t_flag char(10)) returning date;
define i int;
define tt_day date;
DEFINE ESQL,EISAM INT;
DEFINE ETEXT CHAR(80);
let tt_day="18991231";
let i=0;
if t_flag="year" then
while 1=1
on exception in(-1267)
let i=i+1;
end exception ;
let tt_day=t_day-i;
let tt_day=tt_day+t_int units year;
return tt_day with resume;
exit while;
end while;
elif t_flag="month" then
while 1=1
on exception in(-1267)
let i=i+1;
end exception ;
let tt_day=t_day-i;
let tt_day=tt_day+t_int units month;
return tt_day with resume;
exit while;
end while;
elif t_flag="day" then
let tt_day=t_day+t_int units day;
else
let tt_day=t_day;
end if;
return tt_day;
end procedure;
其中重点提下跟踪调试语句trace
存储过程被正确创建后,说明无语法错误,但有可能有逻辑错误
TRACE语句用于调试存储过程, 它可以跟踪以下存储过程实体的值:
变量(Variables)
过程参数(Procedure arguments)
返回值(Return values)
SQL 错误代码(SQL error codes)
ISAM 错误代码(ISAM error codes)
TRACE 语句把跟踪结果写到一个文件中, 该文件由SQL语句SET DEBUG FILE指定
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: 对于过程调用, 不跟踪过程体,仅跟踪过程的输入和返回值。
TRACE ON :打开跟踪调试, 跟踪所有语句
TRACE OFF :关闭跟踪调试
TRACE PROCEDURE: 对于过程调用, 不跟踪过程体,仅跟踪过程的输入和返回值。
create procedure tracepro(var_user_num int)
define var_user_date date;
set debug file to "/export/home/user/trace";
--设置输出文件
trace on;
--跟踪所有执行的语句
select user_date into var_user_date
from users
where user_num = var_user_num;
if var_user_date is null then
trace "user date is null";
--执行到这里输出user date is null
execute procedure other((var_user_num );
end if;
trace off;
--关闭跟踪
end procedure;
define var_user_date date;
set debug file to "/export/home/user/trace";
--设置输出文件
trace on;
--跟踪所有执行的语句
select user_date into var_user_date
from users
where user_num = var_user_num;
if var_user_date is null then
trace "user date is null";
--执行到这里输出user date is null
execute procedure other((var_user_num );
end if;
trace off;
--关闭跟踪
end procedure;
- informix存储过程的调试
- informix调试存储过程
- informix的存储过程
- 在informix的存储过程
- Informix数据库的存储过程
- Informix存储过程 详解
- informix 存储过程
- Informix存储过程 详解
- Informix存储过程 详解
- Informix存储过程 详解
- java调用informix存储过程
- Spring调用informix存储过程的种种奇怪之处
- informix shell 定时执行数据库的存储过程
- oracle存储过程的调试
- oracle存储过程的调试
- informix存储过程之增删查
- INFORMIX存储过程中实现排序后结果insert到表的方法
- Informix存储过程和函数的创建执行和删除语法
- js 弹出对话框3种方式
- 《Programming ASP.NET》学习笔记(验证)
- hibernate初学者容易犯的错误
- 《Programming ASP.NET》学习笔记(母版页和导航)
- Weblogic8安装和配置MSSQL和Oracle数据库连接池 --转帖
- informix存储过程的调试
- Spring+Ibatis处理1对多数据表的例子
- C#开发终端式短信的原理和方法
- linux下mysql安装使用手册(目前最全)
- 通过串口发送手机短信(C#版)
- 在.NET 2.0 中发送Email
- 解析.Net框架下的XML编程技术
- ImageMagick学习
- System.IO全面总结(一)