append()

阅读(749) 标签: append,

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

T.append( cs )

描述:

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

语法:

T.append(cs)

 

备注:

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

T是复组表时,cs可以为单路或多路,多路游标cs的每一路将和T的分表一一对应,记录追加以后组表会自动更新索引。

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

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

参数:

T

实表/复组表

cs

游标

选项:

@i

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

@a

归并追加到补文件上,没有补文件则创建

@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中的数据

Ø  生成补表

 

A

 

1

=connect("demo").cursor("select CLASS,SCORE,STUDENTID,SUBJECT  from SCORES")

返回游标

2

=file("scores.ctx")

生成组表文件scores.ctx

3

=A2.create (#CLASS,#SCORE,STUDENTID,SUBJECT)

创建组表的基表

4

=A3.append@a(A1)

使用@a选项,归并追加到补表上,此时可以看到生成了补表文件scores.ext.ctx

5

=A3.close()

关闭组表

 

Ø  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()

关闭组表