将当前选定表中的数据复制到数组。
语法
COPY TO ARRAY ArrayName
[FIELDS FieldList
| FIELDS LIKE Skeleton
| FIELDS EXCEPT Skeleton]
[Scope] [FOR lExpression1] [WHILE lExpression2]
[NOOPTIMIZE]
参数
ArrayName
指定数组名,将当前选定表中的数据复制到该数组中。
FIELDS FieldList
指定只将由 FieldList 指定的字段复制到数组。若省略 FIELDS FieldList,只要数组有足够的列,则复制所有字段到数组。
Scope
指定要复制到数组中的记录的范围。只有在范围内的记录才被复制。范围子句有:ALL、NEXT
nRecords、RECORD nRecordNumber 和 REST。有关作用域子句的详细内容,请参阅 Scope 子句主题,或《开发指南》的第二章“语言概述”。
COPY TO ARRAY 的默认范围是 ALL 记录。
FOR lExpression1
指定只复制符合逻辑表达式 lExpression1 的记录到数组。包含 FOR 子句可按条件复制记录到数组,筛选出不想要的记录。
若 lExpression1 是可优化表达式,则 Rushmore 优化包含 FOR lExpression1 的 COPY TO ARRAY 查询。为获得最佳效果,可在 FOR 子句中使用可优化表达式。有关 Rushmore 可优化表达式的内容,请参阅 SET OPTIMIZE 和深入了解 Rushmore 技术,或《开发指南》的第十七章“优化应用程序。”
WHILE lExpression2
指定一个条件,只有当逻辑表达式 lExpression2 为“真”(.T.) 时才将记录复制到数组。
NOOPTIMIZE
使 COPY TO ARRAY的 Rushmore 优化无效。有关详细内容,请参阅 SET OPTIMIZE 和深入了解 Rushmore 技术,或《开发指南》的第十七章“优化应用程序”。
说明
COPY TO ARRAY 和 SCATTER 相似。但 COPY TO ARRAY 将多个记录复制到数组,而 SCATTER 只复制一条记录到数组或一组内存变量。若指定的数组不存在,则 COPY TO ARRAY 和 SCATTER 都创建一个新的数组。
要将单个记录复制到数组,可指定一维数组。指定的一维数组的元素数目必须与表中字段的数目相同,但不包括备注字段。在 COPY TO ARRAY 中不考虑备注字段。
若指定了一维数组,则记录的第一个字段存储到数组的第一个元素,第二个字段存储到数组的第二个元素,依此类推。若一维数组的元素数目比表中字段的数目多,则多余元素保持不变。若数组元素比表中字段少,则忽略多余字段。
要将多个记录或整个表复制到数组,则指定一个二维数组。数组的行数就是数组能容纳的记录数,数组的列数就是数组能容纳的字段数。
每个记录存储在数组的一行,记录的每个字段存储在数组的一列。对每个记录,第一个字段存储在数组的第一列,第二个字段存储在数组的第二列,依此类推。若数组的列比表中的字段多,则不更改多余的列。若数组的列比表中的字段少,则多余的字段不存储到数组中。
数组中每一行都填充了表中的一条记录的内容。若数组的行比表中的记录多,则不更改任何多余的行。若数组的行比表中的记录少,则多余的记录不存储到数组中。
可以用 APPEND FROM ARRAY 将数组中的数据复制到新表中的记录。也可以用 GATHER 将数组或一组内存变量中的数据复制到表中的记录。