| |
|
| |
 |
|
db2编程序技巧 (四)
|
|
| 日期:2005-6-24 8:24:57 来源:易特网络技术 编辑:黑鹰 点击: |
1.10 预防字段空值的处理 select deptno ,deptname ,coalesce(mgrno ,'absent'),admrdept from department coalesce函数返回()中表达式列表中第一个不为空的表达式,可以带多个表达式。 和oracle的isnull类似,但isnull好象只能两个表达式。
1.11 取得处理的记录数 declare v_count int; update tb_test set t1=’0’ where t2=’2’; --检查修改的行数,判断指定的记录是否存在 get diagnostics v_ count=row_count; 只对update,insert,delete起作用. 不对select into 有效
1.12 从存储过程返回结果集(游标)的用法 1、建一sp返回结果集 create procedure db2inst1.proc1 ( ) language sql result sets 2(返回两个结果集) ------------------------------------------------------------------------ -- sql 存储过程 ------------------------------------------------------------------------ p1: begin declare c1 cursor with return to caller for select market_code from tb_market_code; --指定该结果集用于返回给调用者 declare c2 cursor with return to caller for select market_code from tb_market_code; open c1; open c2; end p1
2、建一sp调该sp且使用它的结果集
create procedure db2inst1.proc2 ( out out_market_code char(1)) language sql ------------------------------------------------------------------------ -- sql 存储过程 ------------------------------------------------------------------------ p1: begin
declare loc1,loc2 result_set_locator varying; --建立一个结果集数组 call proc1; --调用该sp返回结果集。 associate result set locator(loc1,loc2) with procedure proc1; --将返回结果集和结果集数组关联 allocate cursor1 cursor for result set loc1; allocate cursor2 cursor for result set loc2; --将结果集数组分配给cursor fetch cursor1 into out_market_code; --直接从结果集中赋值 close cursor1;
end p1
3、动态sql写法 declare cursor c1 for stmt1; prepare stmt1 from 'allocate c2 cursor for result set ?'; 4、注意: 一、 如果一个sp调用好几次,只能取到最近一次调用的结果集。 二、 allocate的cursor不能再次open,但可以close,是close sp中的对应cursor。
1.13 类型转换函数 select cast ( current time as char(8)) from tb_market_code
1.14 存储过程的互相调用 目前,c sp可以互相调用。 sql sp 可以互相调用, sql sp 可以调用c sp, 但c sp 不可以调用sql sp(最新的说法是可以)
1.15 c存储过程参数注意 create procedure pr_clear_task_ctrl( in in_branch_code char(4), in in_tradedate char(8), in in_task_id char(2), in in_sub_task_id char(4), out out_success_flag integer ) dynamic result sets 0 language c parameter style general with nulls(如果不是这样,sql 的sp将不能调用该用c写的存储过程,产生保护性错误) no dbinfo fenced modifies sql data external name 'pr_clear_task_ctrl!pr_clear_task_ctrl'@
|
上一篇:db2编程序技巧 (五)
下一篇:db2编程序技巧 (三)
[发送给好友] [打印本页] [关闭窗口] [返回顶部] 转载请注明来源:http://www.iyit.net |
|
| 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 责任编辑: 黑鹰 |
投稿作者: 易特网络 |
| 信息来源: 易特网络技术 |
录入时间: 2005-6-24 8:24:57 |
| 浏览次数: |
投稿信箱: shtghy@163.com |
|
|
|
|