`

db2学习代码例子(代码为转载网上)

    博客分类:
  • db2
阅读更多
 

db22年了,一直都没搞过存储过程,最近想学下,到网上看到这个很全的例子,这里我给它加上注释,给初学者有个学习语法的机会 ,黑色的为原来的例子部分,红色的我加上的语法注释,希望能对大家有所帮助,下面就开始我们美好的历程:

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.iteye.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.iteye.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>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics