CREATE CURSOR – SQL 命令
示例 请参阅
创建一个临时表。
语法
CREATE CURSOR dbf_name
(fname1 type [(precision [, scale])
[NULL | NOT NULL]
[CHECK lExpression [ERROR cMessageText]]
[DEFAULT eExpression]
[UNIQUE]
[NOCPTRANS]]
[, fname2 ...]])
| FROM ARRAY ArrayName
参数
dbf_name
指定要创建的临时表的名称。dbf_name 可以是一个名称表达式。
fname
指定临时表中的字段名。每个 fname 可以是一个名称表达式。
type
指定一个字母来表明字段的数据类型。
precision
指定由 fname 指定的字段的宽度。有些数据类型要求指定 precision。
scale
为指定的数据类型指定小数位数。有些数据类型要求指定 scale。
下表列出了可用的 type、precision 和 scale:
FieldType |
nFieldWidth |
nPrecision |
说明 |
C |
n |
– |
宽度为 n 的字符字段 |
D |
– |
– |
日期型 |
T |
– |
– |
日期时间型 |
N |
n |
d |
有 d 个小数位、宽度为 n 的数值型字段。 |
F |
n |
d |
有 d 个小数位、宽度为 n 的浮点数值型字段。 |
I |
– |
– |
整型 |
B |
– |
d |
双精度型 |
Y |
– |
– |
货币型 |
L |
– |
– |
逻辑型 |
M |
– |
– |
备注型 |
G |
– |
– |
通用型 |
P |
– |
– |
图片 |
nFieldWidth 和 nPrecision 对 D、T、Y、L、M、G 和 P 类型不适用。对于 N、F 或 B 类型,若没有包含 nPrecision,则默认为零(没有小数位)。
NULL
在字段中允许 null 值。
NOT NULL
在字段中不允许 null 值。
如果省略了 NULL 和 NOT NULL,则 SET NULL 的当前设置决定字段中是否允许 null 值。但是,如果省略了 NULL 和 NOT NULL,并且包含 PRIMARY KEY 或 UNIQUE 子句,SET NULL 的当前设置无效,字段默认为 NOT NULL
。
CHECK lExpression
指定字段的有效性规则,lExpression 可以是用户自定义函数。
ERROR cMessageText
指定当字段有效性规则产生错误时,Visual FoxPro 显示的错误信息。只有在浏览窗口或编辑窗口中的数据改变时,才显示该信息。
DEFAULT eExpression
指定字段的默认值,eExpression 的数据类型必须和字段的数据类型相同。
UNIQUE
创建字段的候选索引。候选索引标识和字段同名。有关候选索引的详细内容,请参阅使用索引以及《开发指南》的第七章“处理表”。
附注候选索引(通过包含 UNIQUE 选项所创建)和用 INDEX 命令中的 UNIQUE 选项创建的索引不同。用 INDEX 命令中的 UNIQUE 选项创建的索引允许重复的索引关键字,候选索引不允许重复的索引关键字。
用作候选索引的字段中不允许有 null 值和重复记录。但是,如果为支持 null 值的字段创建候选索引,Visual FoxPro 并不产生错误。如果试图在使用候选索引的字段中输入 null 值或重复值,Visual FoxPro 将产生错误。
NOCPTRANS
防止字符字段和备注字段转换到不同的代码页。如果临时表转换到其他代码页,那么,指定了 NOCPTRANS 的字段并不转换。只能对字符字段和备注字段指定 NOCPTRANS。
下面的示例创建了临时表 MYCURSOR,包含有两个字符字段和两个备注字段。第二个字符字段 CHAR2 和该表中第二个备注字段 MEMO2 包含了 NOCPTRANS 来防止转换。
CREATE
CURSOR mycursor (char1 C(10), char2 C(10) NOCPTRANS,;
memo1 M, memo2 M NOCPTRANS)
FROM ARRAY ArrayName
指定一个已存在数组的名称,其中包含有临时表的每个字段的名称、类型、精度和宽度。有关数组内容的正确格式,请参阅
AFIELDS( )。
说明CREATE
CURSOR 创建了一个在被关闭之前一直存在的临时表。用 CREATE
CURSOR 创建的临时表可象其他表一样操作——可进行浏览和索引,也能追加和修该记录。
临时表在最低的可用工作区中打开,可以通过它的别名来访问它。临时表中的每个字段均由名称、类型、精度和宽度定义。这些定义可从命令本身或从数组中获得。不管 SET EXCLUSIVE 的设置如何,临时表都是独占地打开。