歲月如哥
          人生非夢
          posts - 50,comments - 144,trackbacks - 0
          建了一個存儲過程
          create procedure PR_YDFT_GETFT_TIME        
            
          @AJLB      tinyint,            -- 案件類別           
            @AJBHLIST  varchar(1500),      -- 案件編號列表
            @KSSJ      datetime,           -- 開始時間
            @JSSJ      datetime            -- 結束時間 

          as 
          begin
          …………
          select BH, AH from K_ZS..B_ZX where(這里返回一個結果集)
          end

          在java代碼中如下調用(時間類型為java.sql.Date),即使數據有數據,也不能正確返回結果集:
           public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
               
          //………………                                                
               cs.setDate(3new java.sql.Date(kssj.getTime()));
               cs.setDate(
          4new java.sql.Date(jssj.getTime()));
               
          //………………                                                                                    
          }
          但是將方法改為如下(時間類型為String),就可以正常返回結果集:
          public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
              
          //………………
               cs.setString(3, kssj);
              cs.setString(
          4, jssj);
              
          //………………                                                                                      
            }


             
          另外在sybase的sqladv中如下兩種調用方式均可正確返回結果:
          use K_RW
          go
          PR_YDFT_GETFT_TIME 
          2, "109052298;", "2008-08-19 14:00:00", "2008-08-19 17:00:00"
          use K_RW
          go
          declare @KSSJ datetime 
          declare @JSSJ datetime 
          select @KSSJ = convert(datetime,"2008-08-19 14:00:00")
          select @JSSJ =  convert(datetime,"2008-08-19 17:00:00")
          execute PR_YDFT_GETFT_TIME 2, "109052298;", @KSSJ ,@JSSJ
          在java代碼中調用只是將java.sql.Date參數類型改為String傳遞就能正常返回結果集,是不是因為sybase的驅動問題


          問題原因找到了,是因為使用cs.setDate()給數據庫傳參數只會日期部分。
          如果改用如下代碼就可以:
          cs.setTimestamp(3new java.sql.Timestamp(dKssj.getTime()));
          cs.setTimestamp(
          4new java.sql.Timestamp(dJssj.getTime()));
          cs.setTimestamp()可以將日期和時間部分都傳給數據庫。
          posted on 2008-08-30 14:53 歲月如歌 閱讀(1811) 評論(1)  編輯  收藏 所屬分類: java

          FeedBack:
          # re: java調用存儲過程的傳遞Date參數的問題
          2008-09-01 09:47 | yz
          支持作者的原創文章,通過作者的幾篇文章,對儲存過程的應用多了一些了解,非常感謝!  回復  更多評論
            
          主站蜘蛛池模板: 吴江市| 延寿县| 丹棱县| 阜新市| 双城市| 凌云县| 漯河市| 措美县| 鸡东县| 尚义县| 德昌县| 南部县| 普兰县| 彰化县| 西青区| 抚顺市| 仙游县| 丰城市| 平度市| 文安县| 西青区| 鲁甸县| 平安县| 琼海市| 武隆县| 宁陵县| 北辰区| 林周县| 新建县| 灌南县| 石泉县| 大丰市| 定西市| 兰溪市| 台中市| 石楼县| 龙口市| 新宁县| 北海市| 康乐县| 广宗县|