| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 |
    想学好编程,外语很重要,最新的编程技术还是在国外  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 数据库 >> Infomix >> 文章正文
Informix 高级培训教材(四)            【字体:
Informix 高级培训教材(四)
作者:未知    文章来源:未知    点击数:    更新时间:2006-11-4

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;  
exit while;  
end while;  
elif t_flag="month" then 
while 1=1 No
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;  
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; 
注:在存储过程中,on exception 的使用有作用域,若使用在循环体内,其作用域为循环体,
 
退出即退出本次循环。若使用在begin work commit work ,其作用域为begin work 内,退出
 
即退出该事物体。以下几个实例给予说明:
 
1

create procedure get(t_day date,t_int int )
returning date;
define i int; 
define tt_day date; 
on exception in(-1267) ----
此语句的作用域为整个存储过程
let i=i+1; ----
此语句必须为存储过程的第一条语句 
end exception with resume; ------
注意有
with resume
set debug file to "sun.tmp";
let tt_day="18991231"
let i=0;
while 1=1
trace i;
trace tt_day; 
let tt_day=t_day-i;
let tt_day=tt_day+t_int units month; ---
此处出错后执行while 

环外的第一条语句,即下面黑色字体的语句。若无with resume 则退出存储过
程。 
trace "ok"
trace tt_day;
exit while;
end while;
trace "ok"; ---
出错后执行此语句

trace tt_day;
return tt_day;
end procedure; 

2
create procedure get(t_day date,t_int int ) 
returning date; 
define i int;
define tt_day date;
set debug file to "sun.tmp"
let tt_day="18991231";
let i=0; 
while 1=1 
on exception in(-1267) ----
此语句的作用域为while 循环
let i=i+1; ----
必须为while 循环内的第一条语句 
end exception; ------
注意无
with resume 
trace i; 
trace tt_day; 
let tt_day=t_day-i;
let tt_day=tt_day+t_int units month; ---
此处出错后执行while 

环的下一循环,相当于continue while。若有with resume 则执行下面一条语 )
句,即黑色字体的语句。

trace "ok"
trace tt_day; 
exit while; 
end while;
trace tt_day;
return tt_day;
end procedure;
5
 存储过程的效率 
系统中的存储过程尽量放在一个extents 中,最好不要超过extents. 注:extents 

续的存储空间),因此可定期将系统中的所有存储过程重建。
存储过程中使用set optimization low 可提高存储过程的效率,前提是该存储过程中所涉及
的表的结构,字段无任何改动。
更为重要的是存储过程的效率与存储过程中的语句的写法很有关系。有时某一语句换一种写 
法,存储过程的效率可得到极大提高。

例如:
create procedure true_rqstart( p_main_cert like rta1.bm_cert,p_kinds like
rta1.kinds ,t_rq_start like rta1.rq_start)
returning date; 
define p_rq_start date; 
define tt_rq_start date; 

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 几个重要的Informix动态服务…

  • Informix 4GL 語句 memo

  • Informix 5.0 for OpenServe…

  • Informix数据仓库解决方案

  • 如何监视infomirx动态服务器

  • Informix数据仓库技术

  • Informix知识集锦1

  • informix基础知识:关于物理…

  • INFORMIX安装

  • Linux+Informix后台数据库系…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |