本章介绍fetch()函数的多种用法。
描述:
从游标中获取记录。
语法:
cs.fetch(n;x)
备注:
用游标读出n条记录或至x有变化(x不是逻辑值)或x为真(x是逻辑值),形成序列/排列/序表返回,已到头返回空。常用于大数据量的分批取数。n和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.fetch(;SALARY) |
SALARY有变化时停止取数。即选出一组工资最高且相同的员工,由于A2使用@0选项,所以A3相当于从完整的游标中取数据。 |
4 |
=A1.fetch() |
返回剩余游标 |
5 |
=demo.cursor("select * from EMPLOYEE order by SALARY desc") |
|
6 |
=A5.fetch@x(3) |
取出数据后关闭该游标。 |
7 |
=demo.cursor("select * from EMPLOYEE order by SALARY desc") |
|
8 |
=A7.fetch(3;SALARY==13000) |
x为真时不再取值 |
相关概念:
描述:
保留管道当前数据。
语法:
ch.fetch()
备注:
保留管道ch的当前数据。该函数为结果集函数。
参数:
ch |
管道 |
返回值:
管道
示例:
|
A |
|
1 |
=demo.query("select * from SALES") |
|
2 |
=channel() |
创建管道 |
3 |
=A2.select(ORDERID>100) |
给管道附加ch.select()计算动作 |
4 |
=A2.fetch() |
A2管道附加结果集函数ch.fetch(),保留管道当前数据 |
5 |
=A1.push(A2) |
将序列A1中的数据推送到管道 |
6 |
=A2.result() |
获取管道计算结果 |
描述:
从多路游标中获取记录。
语法:
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取值结果可以看到,取出的记录数据内容并不相同。这是因为多路游标取数时,是每一路中取一点然后合并起来,而单路游标取数时是按照顺序取得,所以结果值才不同。 |