一个在AS/400 DB2下的存储过程示例

AS400 DB2 存储过程
本文介绍如何在AS/400系统下使用DB2创建存储过程,并提供了一个具体示例。该存储过程用于批量插入记录,包括初始化变量、声明游标、条件判断及循环操作。

因程序需要,要在AS/400系统下建立DB2存储过程,参考了很多资料终于写完了一个可以运行的例子.

 

 1CREATE PROCEDURE CIT003/PSCANO              
 2  (IN LOTNO INT,                                
 3   IN MODELNAME VARCHAR(50),                    
 4   IN STARTNO INT,                              
 5   IN QTY INT,                                  
 6   IN INTDATE INT,                              
 7   IN INTTIME INT)                              
 8   LANGUAGE SQL MODIFIES SQL DATA               
 9   P1:BEGIN                                     
10   DECLARE I INT;                               
11   DECLARE ANAMNO CHAR(15);                     
12   DECLARE BARCODE CHAR(15);                    
13   DECLARE TMPSTR CHAR(15);                     
14   DECLARE FRISTNO CHAR(15);                    
15   DECLARE LASTNO CHAR(15); 
16   DECLARE LINE INT;
17
18   DECLARE S11 CURSOR FOR SELECT SWRKC FROM BPCSFCT/FSO WHERE SORD=LOTNO;
19   OPEN S11;
20   FETCH S11 INTO LINE;
21   CLOSE S11;
22
23   SET TMPSTR='00000'||TRIM(CHAR(STARTNO));                                       
24   SET FRISTNO=TRIM(CHAR(LOTNO))||SUBSTR(TMPSTR,LENGTH(TRIM(TMPSTR))-4,5);  
25   SET TMPSTR='00000'||TRIM(CHAR(STARTNO+QTY));                       
26   SET LASTNO=TRIM(CHAR(LOTNO))||SUBSTR(TMPSTR,LENGTH(TRIM(TMPSTR))-4,5);
27
28   IF NOT EXISTS (SELECT SCBC FROM BPCSUSRFC/SCA WHERE SCBC>=FRISTNO AND SCBC<=LASTNO) THEN             
29   SET I=1;                                                           
30   WHILE (I<=QTY) DO                                                  
31   SET TMPSTR='00000'||TRIM(CHAR(STARTNO));                           
32   SET BARCODE=TRIM(CHAR(LOTNO))||SUBSTR(TMPSTR,LENGTH(TRIM(TMPSTR))-4,5); 
33   INSERT INTO BPCSUSRFC/SCA (SCID,SCFAC,SCDTE,SCWC,SCBC,             
34                           SCBCTM,SCSO,SCCDT,SCPRD)                   
35   VALUES ('SC','CF1',INTDATE,LINE,TRIM(BARCODE),INTTIME,LOTNO,
36           INTDATE,MODELNAME);        
37   SET I=I+1;               
38   SET STARTNO=STARTNO+1;   
39   END WHILE;               
40   END IF ;                 
41   END P1;                   
42                            

转载于:https://www.cnblogs.com/moon25/archive/2008/07/20/1247143.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值