- 論壇徽章:
- 0
|
db2存儲過程實(shí)例,請教高手幫忙
為了方便調(diào)試,我只用了2個sql句子。
CREATE PROCEDURE LYPLIBS.getrpt1 ( IN custno VARCHAR( ,
IN startdate INTEGER,
IN stopdate INTEGER,
OUT l3203 VARCHAR(16),
OUT l1105 VARCHAR(40),
OUT l3205 DECIMAL(10,2),
OUT l3206 DECIMAL(10,2),
OUT l0203 DECIMAL(10,2))
RESULT SETS 2
LANGUAGE SQL
------------------------------------------------------------------------
-- SQL 存儲過程
-- custno 客戶代號
-- startdate 初始日期
-- stopdate 結(jié)束日期
-- l3203 品號
-- l1105 品名
-- l3205 期間進(jìn)貨量
-- l3206 期間出貨量
------------------------------------------------------------------------
P1: BEGIN
-- 聲明變量
DECLARE l3203_TMP VARCHAR(16) DEFAULT ' ';
DECLARE l1105_TMP VARCHAR(40) DEFAULT ' ';
DECLARE l3205_TMP INTEGER DEFAULT 0;
DECLARE l3206_TMP INTEGER DEFAULT 0;
DECLARE l0203_TMP FLOAT(5) DEFAULT 0;
-- 聲明游標(biāo)
DECLARE cursor1 CURSOR WITH RETURN FOR
select ly3203,ly1105,sum(ly3205/ly1112),sum(ly3206/ly1112)
from lyplibs.lyf32,lyplibs.lyf11
where ly3230=ly1120 and ly3203=ly1101 and ly3201>;=startdate and
ly3201<=stopdate and ly3230=custno
group by ly3203,ly1105
OPEN cursor1;
SET l3203 = l3203_TMP;
SET l1105 = l1105_TMP;
SET l3205 = l3205_TMP;
SET l3206 = l3206_TMP;
--2、對應(yīng)該該品號求當(dāng)前庫存量
DECLARE cursor2 CURSOR WITH RETURN FOR
select sum(ly0203/ly1112)
from lyplibs.lyf02,lyplibs.lyf03,lyplibs.lyf11
where ly0200=ly0320 and ly0200=ly1120 and ly0201=ly1101 and
ly0202 = ly0301 and ly0200 = CustNo and and ly1101 = l3203 and ly0323 = 'NM'
group by ly0201
open cursor2;
SET l0203 = l0203_TMP;
END P1
不知道這種寫法是否正確,2個sql是應(yīng)該嵌套關(guān)系的。第一個查出來的l3203作為第二個sql句子的條件進(jìn)行查詢。 |
|