本章介绍append()函数的多种用法。
描述:
将游标中的记录追加写入实表中
语法:
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的附表,附表的维是k1和k2,列为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.ctx、2.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) |
|
备注:
将游标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选项,将单路游标追加到虚表中,每次计算分表表达式 |