论坛登陆 用户: 密码:
联系我们
设为首页
加入收藏
业界新闻 网络编程 程序开发 网页图象 聊天通讯 软件应用 网络安全 硬件学堂 教育频道 站长club
  ·推荐新闻
 
·美前任官员认为amd告倒英特
·搜索引擎关键字排行简介
·网站优化教程(一)
·msn近期遭受木马病毒骚扰 用
·用qq管理你的系统^_^ 
·测评中心金山毒霸联合发布7
·qq群聊实名 普通用户不受影
·雅虎思科联手推数字邮件签名
·这18条背下来没人敢和你忽悠
·自己动手,拯救丢失的硬盘数
  ·资料搜索
 
  ·相关文章
·常见数据库系统之比较 - db2数
·jsp如何连接db2数据库
·db2常用傻瓜问题1000问(之一)
·db2常用傻瓜问题1000问(之二)
·db2常用傻瓜问题1000问(之三)
·db2常用傻瓜问题1000问(之四)
·db2常用傻瓜问题1000问(之五)
·db2常用傻瓜问题1000问(之六)
·db2数据库的安装
·ibm db2 日常维护汇总(一)
  ·热门新闻
首页>>程序开发>>数据库>>db2>>文章正文

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
设置首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights ©2004-2005 iyit.net all rights reserved. 网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息