fetch()

阅读(644) 标签: fetch,

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

cs.fetch()

描述:

从游标中获取记录。

语法:

cs.fetch(n;x)

备注:

用游标读出n条记录或至x有变化(x不是逻辑值)或x为真(x是逻辑值),形成序列/排列/序表返回,已到头返回空。常用于大数据量的分批取数。nx省略时返回剩余所有并关闭游标。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.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为真时不再取值

相关概念:

db.cursor()

cs.skip()

ch.fetch()

描述:

保留管道当前数据。

语法:

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