亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
1234下一頁
最近訪問板塊 發(fā)新帖
查看: 9948 | 回復(fù): 33
打印 上一主題 下一主題

db2存儲過程實例,請教高手幫忙 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2004-10-10 09:33 |只看該作者 |倒序瀏覽
下面是一段偽存儲過程的代碼,我只是表達了我希望它實現(xiàn)的效果。但是因為對sql存儲過程不太了解,希望各位高手幫忙看看該如何寫。
數(shù)據(jù)庫是db2/400的,支持sql存儲過程
目的是查出一個滿足條件的結(jié)果集,將結(jié)果集返回給調(diào)用它的java程序,從而生成一個報表。

代碼如下:

CREATE PROCEDURE LYPLIBS.getRpt ( IN CustNo VARCHAR(,
                                  IN DistNo VARCHAR(6),
                                  IN startdate INTEGER,
                                  IN stopdate INTEGER,
                                  OUT l3203 VARCHAR(16),
                                  OUT l1105 VARCHAR(40),
                                  OUT l3205 INTEGER,
                                  OUT l3206 INTEGER,
                                  OUT av1 FLOAT(5),
                                  OUT sum1 INTEGER,
                                  OUT av2 FLOAT(5),
                                  OUT l1809 INTEGER,
                                  OUT l32061 INTEGER )
    RESULT SETS 1
    LANGUAGE SQL
------------------------------------------------------------------------
-- SQL 存儲過程
    -- CustNo
    -- DistNo
    -- startdate
    -- stopdate
    -- l3203 品號
    -- l1105 品名
    -- l3205 期間進貨量
    -- l3206 期間出貨量
    -- av1 平均日出量
    -- sum1 當(dāng)前庫存量
    -- av2 周轉(zhuǎn)天數(shù)
    -- l1809 最近出貨日
    -- l32061 未出貨天數(shù)
------------------------------------------------------------------------
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 av1_TMP FLOAT(5) DEFAULT 0;
    DECLARE sum1_TMP INTEGER DEFAULT 0;
    DECLARE av2_TMP FLOAT(5) DEFAULT 0;
    DECLARE l1809_TMP INTEGER DEFAULT 0;
    DECLARE l32061_TMP INTEGER DEFAULT 0;

    -- 聲明游標
    --1、求出唯一的品號,期間進貨量,期間出貨量
    DECLARE cursor1 CURSOR 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         
                  
        --2、對應(yīng)該該品號求當(dāng)前庫存量                                         
    DECLARE cursor2 CURSOR FOR
        select ly0201,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                 
                           
        --3、對應(yīng)該品號求最近出貨日
    DECLARE cursor3 CURSOR FOR
        select ly1806,max(ly1809)                                          
        from lyplibs.lyf18                                                  
        where ly1840 = CustNo and ly1806 = l3203 and ly1809 >;= startdate and ly1809 <= stopdate
        group by ly1806  

        --4、對應(yīng)該品號求未出貨天數(shù)
    DECLARE cursor4 CURSOR FOR
        select ly3203,count(ly3206)                                      
        from lyplibs.lyf32                                               
        where ly3230= CustNo
        and ly3206 = 0  and ly3203 = l3203  and ly3201 >;= startdate and ly3201<= stopdate                                               
        group by ly3203  

    -- 客戶機應(yīng)用程序的游標未關(guān)閉
    OPEN cursor1;         
    -- 客戶機應(yīng)用程序的游標未關(guān)閉
    OPEN cursor2;
    -- 客戶機應(yīng)用程序的游標未關(guān)閉
    OPEN cursor3;
    -- 客戶機應(yīng)用程序的游標未關(guān)閉
    OPEN cursor4;
    SET l3203 = l3203_TMP;
    SET l1105 = l1105_TMP;
    SET l3205 = l3205_TMP;
    SET l3206 = l3206_TMP;
    SET av1 = av1_TMP;
    SET sum1 = sum1_TMP;
    SET av2 = av2_TMP;
    SET l1809 = l1809_TMP;
    SET l32061 = l32061_TMP;
END P1

論壇徽章:
0
2 [報告]
發(fā)表于 2004-10-10 15:42 |只看該作者

db2存儲過程實例,請教高手幫忙

是不是想把 cursor1 到 cursor3 回給用戶?
只要將RESULT SET 改為4 同時將cursor屬性設(shè)為 with return就可以了

論壇徽章:
0
3 [報告]
發(fā)表于 2004-10-10 17:08 |只看該作者

db2存儲過程實例,請教高手幫忙

樓上的高手,能不能麻煩寫個demo教程出來。
沒寫過存儲過程,db2存儲過程的書又特別少,不像PL/sql有好多入門的書以及實例。
胡子眉毛一把抓,比較暈。
我是想將查到的N條記錄返回出去,這樣我的java程序可以獲得這些數(shù)據(jù),從而可以將這些數(shù)據(jù)寫入excel中。

論壇徽章:
0
4 [報告]
發(fā)表于 2004-10-10 18:00 |只看該作者

db2存儲過程實例,請教高手幫忙

create procedure TestProcedureQQ(OUT how_many SMALLINT)
dynamic result sets 1
READS SQL DATA
LANGUAGE SQL
BEGIN
  declare c1 cursor with return for select * from customer;
  select count(*) into how_many from customer;  
  open c1;
END

論壇徽章:
0
5 [報告]
發(fā)表于 2004-10-11 08:46 |只看該作者

db2存儲過程實例,請教高手幫忙

可以結(jié)合我的實例寫嗎?

論壇徽章:
0
6 [報告]
發(fā)表于 2004-10-11 12:33 |只看該作者

db2存儲過程實例,請教高手幫忙

差不多一個意思啦  你的實例基本已經(jīng)成形了 就把我上面說的幾個地方改一下就行了

論壇徽章:
0
7 [報告]
發(fā)表于 2004-10-12 09:18 |只看該作者

db2存儲過程實例,請教高手幫忙

樓上的,我的實例成形了?
霍霍,看來我還是蠻有天分的嘛。。

可是我要返回一組結(jié)果集,并不只是一個值,而是一組值。

論壇徽章:
0
8 [報告]
發(fā)表于 2004-10-12 12:58 |只看該作者

db2存儲過程實例,請教高手幫忙

你的一組值是用cursor 返回的 只要把cursor設(shè)成with return 并在sp中打開他就可以在應(yīng)用程序中獲得這個cursor的訪問了 具體你看例子和說明就明白了

論壇徽章:
0
9 [報告]
發(fā)表于 2004-10-12 15:49 |只看該作者

db2存儲過程實例,請教高手幫忙

原帖由 "javacool" 發(fā)表:
是不是想把 cursor1 到 cursor3 回給用戶?
只要將RESULT SET 改為4 同時將cursor屬性設(shè)為 with return就可以了

我已經(jīng)按著改了

可是我查出來的記錄外面的java程序怎么取呢?另外,是否在select 的時候應(yīng)該將字段into到某個變量中去?

論壇徽章:
0
10 [報告]
發(fā)表于 2004-10-12 16:48 |只看該作者

db2存儲過程實例,請教高手幫忙

String procName = "ONE_RESULT_SET";
      String sql = "CALL " + procName + "(?, ?)";
      CallableStatement callStmt = con.prepareCall(sql);

      // set input parameter to median value passed back by OUT_PARAM
      callStmt.setDouble(1, outMedian);

      // register the output parameter
      callStmt.registerOutParameter(2, Types.INTEGER);

      // call the stored procedure
      System.out.println();
      System.out.println("Call stored procedure named " + procName);
      callStmt.execute();

      // retrieve output parameter
      int outErrorCode = callStmt.getInt(2);

      if (outErrorCode == 0)
      {
        System.out.println(procName + " completed successfully";
        ResultSet rs = callStmt.getResultSet();
        fetchAll(rs);

        // close ResultSet
        rs.close();
      }
IBM自己的例子
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP