cs.joinx()

描述:

游标与可分段集文件外键式连接。

语法:

cs.joinx(C:…,f:K:…,x:F,…;…;…;n)

备注:

用游标cs中的字段C,匹配可分段集文件f的字段K找到相应记录,然后拼接上该记录的表达式x作为字段F添加到cs中形成新游标匹配不上外键的记录,字段值缺省填写为null fK有序。

该函数返回的游标不可回转。

选项:

@i

匹配不上外键则删除整条记录,缺省填成null

没有x:F参数时,只做针对cs的过滤。

@d

没有x:F参数时,做与@i相反的过滤动作。

@q

cs数据量不大或是序列时,有序匹配加快速度 ; cs是序列时也返回序列。

@u

不保持cs的原次序,可加快速度。

@m

csC有序,fK有序,可用归并方式计算; 此时允许f是游标,cs是多路游标时,f则是同步的多路游标。

参数:

cs

游标/多路游标。

C

游标cs的外键。

f

可分段集文件。

K

f的字段,K#时理解为序号。

x

f的字段表达式。

F

表达式x的字段名。

n

缓存区行数。

返回值:

游标/序列

示例:

游标与集文件常规连接:

 

A

 

1

=file("PersonnelInfo.txt").cursor@t(ID,Name,City,State)

返回游标,数据内容如下:

2

=file("StateFile.btx")

返回对ABBR有序的分段集文件,文件中数据如下:

3

=A1.joinx(State,A2:ABBR,NAME:SName,CAPITAL:SCapital;10000)

A1游标中的字段State匹配StateFile.btxABBR字段,将StateFile.btxNAMECAPITAL列分别作为SNameSCapital字段拼接到A1游标上形成新的游标。

4

=A3.fetch@x(100)

读取A3游标中的前100条记录,读完后关闭游标,返回内容如下:

使用@i选项,删除外键不匹配的记录:

 

A

 

1

=file("PersonnelInfo.txt").cursor@t(ID,Name,City,State)

返回游标,数据内容如下:

2

=file("StateFile.btx")

返回对ABBR有序的分段集文件,文件中数据如下:

3

=A1.joinx@i(State,A2:ABBR,NAME:SName,CAPITAL:SCapital;10000)

使用@i选项,A1游标中外键State匹配不上的记录删除。

4

=A3.fetch@x(100)

读取A3游标中的前100条记录,读完后关闭游标,返回内容如下:

使用@d选项:

 

A

 

1

=file("PersonnelInfo.txt").cursor@t(ID,Name,City,State)

返回游标,数据内容如下:

2

=file("StateFile.btx")

返回对ABBR有序的分段集文件,文件中数据如下:

3

=A1.joinx@d(State,A2:ABBR;10000)

使用@d选项,保留A1游标中外键State匹配不上的记录。

4

=A3.fetch@x(100)

读取A3游标中的前100条记录,读完后关闭游标,返回内容如下:

cs为序表时,使用@q选项:

 

A

 

1

=file("PersonnelInfo.txt").import@t(ID,Name,City,State)

返回序表内容如下:

2

=file("StateFile.btx")

返回对ABBR有序的分段集文件,文件中数据如下:

3

=A1.joinx@iq(State,A2:ABBR,NAME:SName,CAPITAL:SCapital)

cs为序表时返回序表,使用@q选项,提升计算速度,返回结果如下:

f是游标,使用@m选项,归并方式计算:

 

A

 

1

=file("PersonnelInfo.txt").cursor@t(ID,Name,City,State).sortx(State)

返回对State有序的游标,数据内容如下:

2

=file("StateFile.btx").cursor@b()

返回对State有序的游标,数据如下:

3

=A1.joinx@m(State,A2:ABBR,NAME:SName,CAPITAL:SCapital;10000)

A1State有序,A2ABBR有序,使用@m选项,用归并方式计算。

4

=A3.fetch@x(100)

读取A3游标中的前100条记录,读完后关闭游标,返回内容如下: