fetch()

阅读(1713) 标签: fetch,

本章介绍fetch()函数的多种用法。

cs.fetch()

描述:

从游标或集群游标中获取记录。

语法:

cs.fetch(n;x)

备注:

nx两个参数只有一个有效。n有效时表示用游标读出n条记录;x有效时表示至x有变化(x不是逻辑值)或x为真(x是逻辑值),形成序列/排列/序表返回,已到头返回空。常用于大数据量的分批取数。nx省略时返回剩余所有记录并关闭游标。

选项:

@0

选出后的数据并不从游标中实际取出,相当于从游标中复制,不支持x

@x

取出数据后关闭该游标

参数:

cs

游标或集群游标

n

整数

x

分组表达式,csx有序,有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()

IMG_256

由于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.1101.emp.ctx中包含EID1-250的数据,节点机192.168.18.1432.emp.ctx中包含EID251-500的数据。

3

=A2.open()

打开集群组文件

4

=A3.cursor()

返回集群游标

5

=A4.fetch()

取出集群游标中的记录

 

相关概念:

db.cursor()

cs.skip()

ch.fetch()

描述:

保留管道当前数据。

语法:

ch.fetch(f)

备注:

保留管道ch的当前数据,有参数f时将结果写入集文件f。该函数为结果集函数。

参数:

ch

管道

f

集文件

返回值:

管道

示例:

 

A

 

1

=demo.cursor ("select * from SALES")

 

2

=channel()

创建管道

3

=channel()

 

4

=A2.select(ORDERID>100)

给管道附加ch.select()计算动作

5

=A3.select(ORDERID>100)

 

6

=A2.fetch()

A2管道附加结果集函数ch.fetch(),保留管道当前数据。

7

=A3.fetch("sales.btx")

A3管道附加结果集函数ch.fetch(),并将结果写入到主目录下的集文件sales.btx

8

=A1.push(A2,A3)

A1中的数据推送到管道

9

=A1.fetch()

 

10

=A2.result()

获取管道计算结果

mcs.fetch()

描述:

从多路游标中获取记录。

语法:

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取值结果可以看到,取出的记录数据内容并不相同。这是因为多路游标取数时,是每一路中取一点然后合并起来,而单路游标取数时是按照顺序取得,所以结果值才不同。