设为首页 收藏本站
查看: 779|回复: 0

[经验分享] db2学习代码例子(代码为转载网上)

[复制链接]

尚未签到

发表于 2016-11-16 10:09:24 | 显示全部楼层 |阅读模式
 搞db2也2年了,一直都没搞过存储过程,最近想学下,到网上看到这个很全的例子,这里我给它加上注释,给初学者有个学习语法的机会 ,黑色的为原来的例子部分,红色的我加上的语法注释,希望能对大家有所帮助,下面就开始我们美好的历程:
CREATE PROCEDURE IPD.st_inter_PROF ( IN  in_Transfer_id dec(6,0),
                                     IN in_TRANS_TYPE_id dec(2,0),
                                     IN in_begin_date timestamp,
                                     IN in_TRANSFER_name varchar(1024),
                                     OUT o_err_no int,
                                     OUT o_err_msg varchar(1024) )
LANGUAGE SQL
(说明:定义存储过程名后面括号的部分为输入输出参数定义。IN 表示输入参数,OUT表示输出参数,INOUT表示既是输入参数也是输出参数,参数类型就这3种了。例子中的dec(6,0)为参数的数据类型还可以为smallint bigint等)。<o:p></o:p>
(例子中的LANGUAGE SQL表示此存储过程是sql存储过程,还可以是用c写的存储过程,具体自己查资料吧。这里除了LANGUAGE SQL,还可以有其他说明:DYNAMIC RESULT SETS integer SPECIFIC specific-name等。具体可以下载下面的附件说明。也可以看我blog文章:http://acme1921209.iyunv.com/blog/97863<o:p></o:p>
---------------------------下面开始存储过程的主体---------<o:p></o:p>
P1:BEGIN --(这里begin对应后面的end,表示一块。可以嵌套 benin   begin  end  end <o:p></o:p>
   --临时变量出错变量<o:p></o:p>
     declare rec              integer default 0;<o:p></o:p>
--声明变量 (注意变量前缀和输入输出变量前缀i o vn)
declare  v_name   varchar(1000);
 declare n_rows_all    bigint;
<o:p> </o:p>
--声明静态游标()
DECLARE c1 CURSOR  FOR  SELECT XM FROM T_RYXX WITH UR;
--声明动态游标
DECLARE  V_C1 VARCHAR(50);
DECLARE c2 CURSOR FOR S1;
--声明出错处理 (出错处理声明应当位于变量声明和游标声明后面)(所谓的出错处理就是当程序出错时进行怎么样的操作,这个操作就是在这里定义)(具体出错处理说明可以看这里的最佳实践4http://acme1921209.iyunv.com/admin/show/97829
DECLARE EXIT HANDLER FOR SQLEXCEPTION
Begin
………
End
DECLARE continue HANDLER for not found  
begin
   ……….
end;
--开始啦
SELECT  XM  INTO V_NAME FROM   T_RYXX WHRE   RYXXID= in_Transfer_id(in_Transfer_Id<o:p></o:p>
为输入参数)
<o:p> </o:p>
---对上面动态游标的应用<o:p></o:p>
Set V_C1 = ‘select   xm from t_ryxx fetch first  20 rows only with ur’;
PREPARE  S1 FROM V_C1;
OPEN C1;
fetch_loop1:
loop
--loop主体,这里省略了,具体的可以看下面的附件,附件里有此存储过程的完整源代码,当然也有关于loop的详细语法说明,大家也可以去db2信息中心搜索,这个loop语法说明也是从db2信息中心下的<o:p></o:p>
end loop fetch_loop1;  ----(loop结束)
…..—(关于存储过程的其他语法就不多说了)
END P1;   ---(存储过程结束)<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
注:下面附件附件内容还是很全面的,我初学基本就是看了下面的资料,当然也是网上很常见的那些,附件中的PROCEDURE-Example.sql为此存储过程的完整代码)<o:p></o:p>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-301074-1-1.html 上篇帖子: 使用spring+atomikos+ibatis实现声明式DB2多数据库全局分布式事务 下篇帖子: DB2数据库中索引的语法介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表