append()

阅读(1317) 标签: append,

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

T.append( cs )

描述:

将游标中的记录追加写入实表中

语法:

T.append(cs)

 

备注:

将游标cs中的记录追加写入实表T中。

T是复组表时,cs可以为单路或多路,多路游标cs的每一路将和T的分表一一对应。

当主表上已经存在附表时,为主表追加数据,要求数据必须对键有序且唯一,否则报错。

主表里存在的记录,附表里可以没有记录与之对应;附表里存在的记录,在主表里必须有记录对应,否则拒绝追加。

参数:

T

实表/复组表

cs

游标

选项:

@i

立即写出;缺省积累足够数据后再写出,组表关闭时强行写出

@x

单路cs时可能对应T的多个分表,每次计算分表表达式

返回值:

示例:

Ø  T为实表:

 

A

 

1

=create(k1,v1).record([1,10,2,20,3,30,4,40,10,100])

创建序表

2

=create(k1,k2,v2).record([1,1,"a",3,1,"c"])

创建序表

3

=create(k1,v3).record([1,"red",1,"blue",2,"red",2,

"yellow",2,"red",2,"red",4,"black",4,"red",4,"red",

4,"red",4,"red",4,"red",10,"red"])

创建序表

4

=file("D:/ctb.ctx")

 

5

=A4.create(#k1,v1)

创建组表基表,其中k1作为维,v1为基表的列

6

=A5.attach(table2,#k2,v2)

A2返回的基表上增加名为table2的附表,附表的维是k1k2,列为v2

7

=A5.attach(table3,v3)

A2返回的基表上增加名为table3的附表,附表的维是k1,列为v3

8

=A5.append(A1.cursor())

在基表中添加游标记录

9

=A6.append(A2.cursor())

在附表table2中添加游标记录

10

=A7.append(A3.cursor())

在附表table3中添加游标记录

11

=A5.cursor().fetch()

返回基表中的数据

12

=A6.cursor().fetch()

返回附表table2中的数据

13

=A7.cursor().fetch()

返回附表table3中的数据

 

Ø  T为复组表:

 

A

 

1

=connect("demo").cursor("select EID,NAME,GENDER,SALARY  from employee where GENDER='M' order by SALARY")

 

2

=connect("demo").cursor("select EID,NAME,GENDER,SALARY  from employee where GENDER='F' order by SALARY")

 

3

=[A1,A2].mcursor()

返回多路游标

4

=file("emp.ctx":[1,2])

生成文件组,包含的文件分别为1.emp.ctx2.emp.ctx

5

=A4.create@y(#EID,NAME,GENDER,SALARY;if(GENDER=="F",1,2))

创建复组表,if(GENDER=="F",1,2)为分表表达式,使用@y选项,文件已存在时强制重新创建

6

=A5.append@i(A3)

将多路游标A3中的数据追加到复组表A5中,A3的每一路与A5的分表一一对应,使用@i选项将数据立即写出到复组表中

Ø  单路游标追加写入复组表:

 

A

 

1

=connect("demo").cursor("select EID,NAME,GENDER,SALARY  from employee")

返回单路由表

2

=file("emp.ctx":[1,2])

生成文件组

3

=A2.create (#EID,NAME,GENDER,SALARY;if(GENDER=="F",1,2))

返回复组表

4

=A3.append@x(A1)

使用@x选项,将单路游标追加到复组表中,每次计算分表表达式

5

=A3.close()

关闭组表

 

 

T.append( cs )

描述:

将游标中的记录追加写入虚表中

语法:

T.append(cs)

 

备注:

将游标cs中的记录追加写入虚表T中。file是序列时只写入最后一个组文件。

参数:

T

虚表

cs

游标

选项:

@i

立即写出;缺省积累足够数据后再写出,程序退出/有读取时将立即写出

@x

cs为单路游标时,可能对应虚表T的多个分区,需要每次计算分区表达式

返回值:

示例:

Ø  T为虚表:

 

A

 

1

=create(file).record([["D:/file/pseudo/Employee1.ctx","D:/file/Employee2.ctx"]])

 

2

=pseudo(A1)

生成虚表对象

3

=create(Dept,AvgSalary).record(["CSD",6400.53])

 

创建序表

4

=A2.append@i(A3.cursor())

在最后一个组文件Employee2.ctx的虚表中添加游标记录

Ø  单路游标追加写入虚表:

 

A

 

1

=file("append/apps.ctx":[1,2]).create@yi(#eid, deptid;(deptid%2)+1)

 

2

=to(1,10000).new(~:eid,rand(5)+1:deptid)

创建序表

3

=pseudo(create(file,zone).record(["append/apps.ctx",[1,2]]))

生成虚表对象

4

=A3.append@ix(A2.cursor())

使用@x选项,将单路游标追加到虚表中,每次计算分表表达式