追隨Java
          簡單的事情重復做,就會產生累積效應!
          posts - 260,  comments - 338,  trackbacks - 0
               有進要通過jdbc調用存儲過程,來說一下怎樣來實現?
           在我見過的有兩種情況:
                   1)返回一個結果集(ResultSet)。
            2)返回一個特定的值。
           下面來詳細的說明。
           1)返回一個結果集(ResultSet),這種類似通常的處理結果集
              如果事先就有一個類似如下的procedure
          CREATE PROCEDURE getShipQuantity @jsid int  AS
          SELECT jf_js_id,SUM(jf_ship_quantity) AS shipqty 
          FROM tjobsheet_finish f WHERE (jf_js_id=@jsid)
          GROUP BY jf_js_id
                        那么我們將通過如下的代碼來調用
            String sql = "{ call getShipQuantity(?) }";
                   Connection con 
          = getSession().connection();//通過hibernate得到的連接
                   ResultSet  rs 
          = null;
                  BigDecimal shipQuantity 
          = new BigDecimal(0);
                  
          try{
                       CallableStatement cs 
          = con.prepareCall(sql);
                      cs.setInt(1,jsoId);//設置輸入參數
                      rs 
          = cs.executeQuery();//返回結果集
                      
          if(rs.next()){
                               shipQuantity 
          = new BigDecimal(rs.getDouble(2));
                      }

                      logger.debug(
          "shipQuantity --------------------- "+shipQuantity);
                  }
          catch(Exception e){
                      logger.debug(e);
                  }

                2)返回一個特定的值。也就是說,在procedure的定義中已經用output輸出參數了。請看下面的proceduer
          create procedure getSingleWgt @@singleWgt numeric(8,3output,@jsnum varchar(11= '0000-0480'
          as
          declare @stwgt numeric(8,3)
          select  @stwgt = sum(b.stwgt)
          from js as a
          inner join jsactdtl as b 
          on a.jsnum = b.jsnum
          where a.completion = 1 
          and b.stflag = 22
          and a.jsnum = @jsnum
          select @@singleWgt = (@stwgt/orderedqty)  from js where jsnum = @jsnum

                  那么我們將通過如下的代碼來調用
          String sql = "{ call getSingleWgt(?,?) }";
          Connection con 
          = getSession().connection();//得到connection
          try{
               CallableStatement cs 
          = con.prepareCall(sql);//通過它來執行sql
              cs.registerOutParameter(1,java.sql.Types.FLOAT);//注冊輸出參數
              cs.setString(2,shipment.getJsnum());//指出輸入參數
              
              
          if(cs.execute()){//執行
              float output = cs.getFloat(1);//返回值        
              }

          }
          catch(Exception e){
              logger.debug(e);
          }


                  
          posted on 2005-09-01 13:59 Harryson 閱讀(612) 評論(0)  編輯  收藏 所屬分類: Jdbc

          <2005年9月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿(10)

          隨筆分類(319)

          AJAX

          Coffee House

          CSS

          Java

          JavaScript

          Open Source

          ProjectManagement

          友情Blog

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 鹿泉市| 南昌市| 平潭县| 平乐县| 肥城市| 叶城县| 武乡县| 聊城市| 松桃| 太和县| 桂阳县| 元阳县| 雷州市| 麻栗坡县| 洛浦县| 天镇县| 宜良县| 沈丘县| 诏安县| 蒙城县| 濮阳县| 扎赉特旗| 东乡族自治县| 沈阳市| 澎湖县| 芦溪县| 天祝| 全南县| 遵义市| 九寨沟县| 勃利县| 无棣县| 平遥县| 郎溪县| 宜良县| 逊克县| 克山县| 分宜县| 邵武市| 阿拉善盟| 辽阳县|