问题描述: 大量的外部终端通过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吧,简单测试后,问题貌似解决了。