追隨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 閱讀(608) 評論(0)  編輯  收藏 所屬分類: Jdbc

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

          常用鏈接

          留言簿(10)

          隨筆分類(319)

          AJAX

          Coffee House

          CSS

          Java

          JavaScript

          Open Source

          ProjectManagement

          友情Blog

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乐亭县| 金山区| 景洪市| 麻城市| 营口市| 定远县| 镇平县| 永泰县| 偏关县| 黄山市| 开原市| 平谷区| 资中县| 柳河县| 大新县| 慈利县| 池州市| 平凉市| 陆河县| 邯郸县| 赣州市| 于田县| 三门县| 宣汉县| 宝坻区| 北票市| 滕州市| 丰顺县| 清水县| 陇南市| 黄大仙区| 张家口市| 峨眉山市| 壶关县| 定州市| 弥勒县| 临江市| 深水埗区| 纳雍县| 芜湖市| 眉山市|