程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 分批讀取Oracle數據

分批讀取Oracle數據

編輯:Oracle數據庫基礎
 問題描述: 大量的外部終端通過socket訪問內部的UNIX服務器,要求從服務器的Oracle數據庫中得到數據在終端處理顯示。這裡要求socket最大的傳輸量是5000個字符,那麼對於海量數據就要求分批次取得數據並且多次傳輸,怎麼實現呢?

        解決方案:首先考慮使用ROWNUM,但是在Oracle(version 10g)中,ROWNUM不能使用">", 並且經過簡單測試,發現“ORDER BY XXX”與 ROWNUM結合起來查詢時,不能確保查詢到的數據一致,順序變了(為什麼?我想可能是先做了SELECT, 然後再做的ORDER BY  排序,所以會出現這種情形。真相以後再查證啦..)。所以考慮嵌套SELECT解決ROWNUM不能使用“>”的問題,那麼ORDER BY 呢?考慮到ROWID是唯一標識記錄的標志,就用ORDER BY ROWID吧,簡單測試後,問題貌似解決了。



SELECT *  
FROM (
             SELECT ROWNUM SN, t.*  
             FROM TABLE_NAME t 
             ORDER BY ROWID
           ) 
WHERE SN>5 
AND       SN<=10

       等待做進一步的測試...

 



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved