其实,从外存排序的过程中,我们就可以看到对游标排序的应用之一:排序后的数据可以用来有序归并。有序归并可以从多个游标中获取数据,根据排序表达式计算,哪个游标中的当前结果最小(或最大),则读取这个游标中的记录。显然,只有在各个游标中的数据均有序时,才能使用这样的计算方法。除此以外,使用joinx() 函数将游标中的记录对齐式连接时,也要求各个游标中的数据先完成排序。关于joinx() 的使用,请阅读7.4游标归并与连接。
当游标中的数据满足有序需求时,在游标中获取数据还可以指定取数到表达式变化为止,如:
|
A |
1 |
=file("PhoneRecord.btx ") |
2 |
=A1.cursor@b() |
3 |
=A2.sortx(Date,-PhoneNum;20000) |
4 |
=A3.fetch(;Date) |
5 |
>3.(A3.skip(;Date)) |
6 |
=A3.fetch(;Date) |
7 |
>A3.close() |
A4中,从A3的游标中取数,直到日期变化为止,即取出第1天的数据;A5中,连续跳过3天的数据;A6中取出第5天的数据。A4和A6中的结果如下: