Создает временную таблицу, которая существует только до момента ее закрытия.
CREATE CURSOR alias_name ...[CODEPAGE=nCodePage] (fname1 cFieldType [(nFieldWidth [, nPrecision])] [NULL | NOT NULL] [CHECK lExpression [ERROR cMessageText]] [AUTOINC [NEXTVALUE NextValue [STEP StepValue]]] [DEFAULT eExpression] [UNIQUE [COLLATE cCollateSequence]] [NOCPTRANS] [, fname2 ...]) | FROM ARRAY ArrayName |
Параметры
- alias_name
-
Указывает имя создаваемой временной таблицы. Параметр alias_name может быть выражением, оцениваемым в имя.
- nCodePage
-
Указывает какую кодовую страницу использовать при создании. Для получения подробной информации о списке поддерживаемых кодовых странице обратитесь к статье Кодовые страницы, поддерживаемые Visual FoxPro.
- fname
-
Указывает имя поля временной таблицы. Каждый fname может представлять собой выржание, оцениваемое в имя.
- cFieldType
-
Указывает одну букву или длинное имя, определяющие тип данных, которые будут храниться в поле.
- nFieldWidth
-
Определяет ширину поля, указанного в fname. Некоторые типы данных требуют, чтобы вы указали значение для nFieldWidth. Для некоторых типов данных это значение устанавливается автоматически
- nPrecision
-
Определяет число десятичных мест для указанного типа данных. Некоторые типы данных требуют указания этого значения, для некоторых типов данных, например, символьных, это значение абсурдно.
В приведенной ниже таблице показаны возможные значения для параметров cFieldType, nFieldWidth и nPrecision.
cFieldType nFieldWidth nPrecision Описание W, Blob
-
-
Blob
C, Char, Character
n
–
Character поле с длиной n
Y, Currency
–
–
Currency
D, Date
–
–
Date
T, DateTime
–
–
DateTime
B, Double
–
d
Double
G, General
–
–
General
I, Int, Integer
–
–
Integer
L, Logical
–
–
Logical
M, Memo
–
–
Memo
N, Num, Numeric
n
d
Numeric поле с длиной n, имеющее d десятичных мест
F, Float
n
d
Поле Numeric длиной n имеющее d десятичных мест с плавающей запятой
Q, Varbinary
n
-
Varbinary поле с длиной n
V, Varchar
n
-
Varchar поле с длиной n
Параемтры nFieldWidth и nPrecision игнорируются для типов W, Y, D, T, G, I, L и M. Если nPrecision не указана для типов данных N, F или B, то nPrecision установливается в значение по умолчанию равное zero (нет десятичных мест).
- NULL | NOT NULL
-
Определяет - будут ли допустимы для хранения в поле null-значения. NULL разрешает зранение null-значений, а NOTNULL запрещает.
- CHECK lExpression
-
Указывает правило проверки для поля. Параметр lExpression должен оцениваться в логическое выражение и может быть пользовательской функцией или хранимой процедурой.
- ERROR cMessageText
-
Определяет сообщение об ошибке, которое будет выведено пользователю в случае, когда правило проверки возвращает значение .F. и генерируется соответствующая ошибка. Сообщение отображается только в случае, когда данные изменены в окнах Browse или Edit.
- AUTOINC [NEXTVALUE NextValue [STEP StepValue]]
-
Разрешает автоувеличение для поля.
NextValue указывает начальное значение и может быть как положительным, так и отрицательным числом в диапазоне от 2,147,483,647 до -2,147,483,647. Значение по умолчанию для этого параметра равно единице (1). Вы можете установить NextValue используя бокс Next Value на закладке Fields в табличном дизайнере.
StepValue указывает значение, на которое будет увеличиваться значение поля, которо может быть положительным, не равным нулю, в диапазоне от 1 до 255. Значением по умолчанию является 1. Вы можете установить значение StepValue используя бокс Step на закладке Fields табличного редактора.
Значения поля автоувеличения не могут хранить null-значения (.NULL.). Автоувеличение включается, когда размер шага автоувеличения больше чем 0.
Замечание
Таблица, содержащая поля с разрешенным для них автоувеличением в случае табличной буфферизации добавляют записи примерно на 35% медленнее по сравнению с таблицами, не имеющими таких полей. При использовании табличной буфферизации заголовок таблицы блокируется во время добавления записей.
- DEFAULT eExpression
-
Указывает значение по умолчанию для поля. Тип данных выражения eExpression должен быть того же самого типа, что и тип данных, которое ьудет храниться в этом поре.
Если вы используете опцию AUTOINC для разрешения автоувеличения значений поля и указываете значение по умолчанию, Visual FoxPro хранит введенное вами значение в таблице, но не использует его. Visual FoxPro использует значение по умолчанию, если вы используете команду ALTER TABLE - SQL для удаления автоувеличения для поля.
- UNIQUE
-
Создает индекс-кандидат для поля. Тэг индекса-кандидата имеет тоже самое имя, что и имя поля. Для получения более подробной информации об индексах-кандидатах смотрите Типы индексов Visual FoxPro.
- COLLATE cCollateSequence
-
Определяет последовательность сопоставления, если она отличается от используемой по умолчанию MACHINE. Параметр cCollateSequence должен быть поддерживаемой и действительной последовательностью сопоставления Visual FoxPro. Для получения более подробной инофрмации смотрите описания Оптимизация международных приложений и Команда SET COLLATE.
- NOCPTRANS
-
Предотвращает трансляцию между разными кодовыми страницами для полей типа Character, Memo и Varchar. Вы можете указать NOCPTRANS только для полей этих типов.
- FROM ARRAY ArrayName
-
Указывает имя существующего массива, который содержит всю необходимую для создания временной таблицы информацию - имена полей, их тип, точность и размер. Вы можете использовать опцию FROM ARRAY вместо указания индивидуальных полей. Для точного формата содержания массива смотрите описание функции AFIELDS().
Примечания
Вы можете управлять временной таблицей, созданной с помощью CREATE CURSOR в той же манере, что и любой другой таблицей — вы можете просматривать ее и индексировать, вы можете добавлять и изменять записи. Временная таблица открывается в ближайшей свободной рабочей области и на нее можно ссылаться с помощью псевдоимени. Каждое поле временной таблица определено по всем правилам, как и для обычной таблицы. Эти определения могут быть получены как из команды, так и из массива. Временная таблица открывается эксклюзивно (в монопольном режиме) независимо от значения установки SET EXCLUSIVE.
Если вы опустити опции NULL и NOT NULL, то будет или нет разрешено хранение в поле null-значений, определяется текущей установкой SET NULL. Однако, если вы опустите в команде опции NULL и NOT NULL, но включите в команду ключевое выражение PRIMARY KEY или ключевое слово UNIQUE, Visual FoxPro не будет обращать внимания на значение установки SET NULL и поле, по умолчанию, получит NOT NULL.
Null-значения и дублированные записи не разрешены в поле, используемом для индекса-кандидата. Однако, Visual FoxPro не сгенерирует ошибки, если вы создаете индекс-кандидат для, которое уже поддерживает null-значения. Visual FoxPro сгенерирует ошибку, если вы попытаетесь ввести null или диблирующее значение в поле, используемое для индекса-кандидата.
![]() |
---|
Индексы-кандидаты, созданные с помощью включения ключевого слова UNIQUE (предоставляемого для совместимости с ANSI) в команду CREATE TABLE – SQL или ALTER TABLE – SQL, не являются теми же самыми, которые создаются командой INDEX с ключевым словом UNIQUE. Индекс, созданный с помощью команды INDEX с ключевым словом UNIQUE позволяют дублирование индексных ключей, тогда как индекс-кандидат - нет. Для получения более подробной информации об ключевом слове UNIQUE в команде INDEX смотрите ее описание в Команда INDEX. |
Если таблица сконвертирована в другую кодовую страницу, поля, для которых было опрелено NOCPTRANS не транслируются.
CREATE CURSOR...FROM ARRAY распознает все типы полей, доступные в функции AFIELDS() и включает автоувеличение в курсоре, если значение Step указано большим чем ноль (zero).
Пример
Приведенный ниже пример создает курсор с псевдоименем "employee." В него добавляется чистая запись, заполняется и отображается при выдаче команды BROWSE.
![]() | |
---|---|
CLOSE DATABASES CLEAR CREATE CURSOR employee ; (EmpID N(5), Name Character(20), Address C(30), City C(30), ; PostalCode C(10), OfficeNo C(8) NULL, Specialty Memo) DISPLAY STRUCTURE WAIT WINDOW "Press a key to add a record." INSERT INTO employee (EmpId, Name, Address, City, PostalCode, ; OfficeNo, Specialty); VALUES (1002, "Dr. Bonnie Doren", "University of Oregon", "Eugene", ; "98403", "", "Secondary Special Education") BROWSE * В этой точке вы можете скопировать эту запись в постоянную таблицу. CLOSE ALL && После того, как курсор закрыт, все данные удаляются из памяти. CLEAR |
ПРиведенный ниже пример использует ключевое слово NOCPTRANS для предотвращения трансляции в другую кодовую страницу. Пример создает курсор с именем "mycursor", который содержит два символьных поля и два мемо-поля. Второе символьное поле, "char2," и второе мемо-поле, "memo2," включают NOCPTRANS для предотвращения трансляции.
![]() | |
---|---|
CREATE CURSOR mycursor (char1 C(10), char2 C(10) NOCPTRANS,; memo1 M, memo2 M NOCPTRANS) |