本章介绍fetch()函数的多种用法。
描述:
从游标或集群游标中获取记录。
语法:
cs.fetch(n;x)
备注:
n与x两个参数只有一个有效。n有效时表示用游标读出n条记录;x有效时表示至x有变化(x不是逻辑值)或x为真(x是逻辑值),形成序列/排列/序表返回,已到头返回空。常用于大数据量的分批取数。n和x都省略时返回剩余所有记录并关闭游标。
选项:
@0 |
选出后的数据并不从游标中实际取出,相当于从游标中复制,不支持x。 |
@x |
取出数据后关闭该游标 |
参数:
cs |
游标或集群游标 |
n |
整数 |
x |
分组表达式,cs按x有序,有x时忽略n |
返回值:
序列/排列/序表
示例:
|
A |
|
1 |
=demo.cursor("select * from EMPLOYEE order by SALARY desc") |
返回取数游标,并按照SALARY排序 |
2 |
=A1.fetch@0(3) |
选出工资最高的3名员工 |
3 |
=A1.derive(interval@y(BIRTHDAY,HIREDATE):EntryAge, age(HIREDATE):WorkAge) |
|
4 |
=A1.fetch() |
由于A2使用@0选项,所以A3相当于从完整的游标中取数据。 |
5 |
=demo.cursor("select * from EMPLOYEE order by SALARY desc") |
|
6 |
=A5.fetch(;SALARY) |
SALARY有变化时停止取数。即选出一组工资最高且相同的员工。 |
7 |
=A5.fetch() |
返回剩余游标 |
8 |
=demo.cursor("select * from EMPLOYEE order by SALARY desc") |
|
9 |
=A8.fetch@x(3) |
取出数据后关闭该游标。 |
10 |
=demo.cursor("select * from EMPLOYEE order by SALARY desc") |
|
11 |
=A10.fetch(3;SALARY==13000) |
x为真时不再取值 |
|
A |
|
1 |
[192.168.0.110:8281,192.168.18.143:8281] |
分机序列 |
2 |
=file("emp.ctx":[1,2], A1) |
分机192.168.0.110的1.emp.ctx中包含EID为1-250的数据,节点机192.168.18.143的2.emp.ctx中包含EID为251-500的数据。 |
3 |
=A2.open() |
打开集群组文件 |
4 |
=A3.cursor() |
返回集群游标 |
5 |
=A4.fetch() |
取出集群游标中的记录 |
相关概念:
描述:
保留管道当前数据。
语法:
ch.fetch(f)
备注:
保留管道ch的当前数据,有参数f时将结果写入集文件f。该函数为结果集函数。
参数:
ch |
管道 |
f |
集文件 |
返回值:
管道
示例:
描述:
从多路游标中获取记录。
语法:
mcs.fetch()
备注:
从多路游标中获取所有记录。多路游标获取记录时结果次序不确定。
参数:
mcs |
多路游标 |
返回值:
排列
示例:
|
A |
|
1 |
=file("D:/txt_files/orders.txt").cursor@m() |
返回多路游标 |
2 |
=A1.fetch() |
从多路游标获取记录 |
3 |
=file("D://tb1.txt").import() |
tb1.txt中包含10w条数据 |
4 |
=A3.cursor() |
生成单路游标 |
5 |
=A4.fetch(15000) |
取前15000条数据 |
6 |
=A3.cursor@m(10) |
生成多路游标 |
7 |
=A6.fetch(15000) |
取前15000条数据 对比A5取值结果可以看到,取出的记录数据内容并不相同。这是因为多路游标取数时,是每一路中取一点然后合并起来,而单路游标取数时是按照顺序取得,所以结果值才不同。 |