Команда 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. Этот аргумент является обязательным для некоторых типов данных.
scale
Задает количество десятичных позиций для заданного типа данных. Этот аргумент является обязательным для некоторых типов данных.
В следующей таблице показано, какие значения могут принимать аргументы type, precision и scale:

FieldType	nFieldWidth	nPrecision	Описание типа данных
C		n		-		Символьное поле ширины n
D		-		-		Дата
T		-		-		Тип DateTime
N		n		d		Числовое поле ширины n, содержащее d десятичных знаков
F		n		d		Плавающее числовое поле ширины n, содержащее d десятичных знаков
I		-		-		Целочисленное
B		-		d		Двойной
Y		-		-		Тип Currency
L		-		-		Логический
M		-		-		Memo
G		-		-		General
P		-		-		Рисунок

Для типов D, T, Y, L, M, G и P значения nFieldWidth и nPrecision игнорируются. Если значение nPrecision не указано для типа N, F или B, оно по умолчанию принимается равным нулю (нет десятичных знаков). NULL
Разрешает иметь в поле значения NULL.
NOT NULL
Запрещает значения NULL в поле.
Если опущены оба параметра NULL и NOT NULL, то допустимость значений NULL в поле определяется текущей установокй SET NULL. Однако если вы, опустив NULL и NOT NULL, включили предложение PRIMARY KEY или UNIQUE, текущая установка SET NULL игнорируется и для данного поля по умолчанию принимается опция NOT NULL.
CHECK lExpression
Задает правило для поля. В качестве lExpression можно указать пользовательскую функцию.
ERROR cMessageText
Задает текст сообщения об ошибке, выдаваемого при нарушении правила поля. Это сообщение выдается только в том случае, когда данные изменяются в окне просмотра или окне редактирования.
DEFAULT eExpression
Задает значение, принимаемое в поле по умолчанию. Тип данных выражения eExpression должен совпадать с типом данных поля.

UNIQUE
Создает для поля индекс-кандидат. Имя тега индекса-кандидата совпадает с именем поля. Подробнее об индексах-кандидатах см. тему Использование индексов и главу 7 "Работа с таблицами" Руководства разработчика.
Замечание Индексы-кандидаты, создаваемые с помощью опции UNIQUE, отличаются от индексов, создаваемых с помощью опции UNIQUE команды INDEX. В индексе, созданном по команде INDEX с опцией UNIQUE, разрешены повторяющиеся ключи индекса; в индексах-кандидатах повторение ключей индекса запрещено.
В поле, используемом для индекса-кандидата, не допускаются значения NULL и повторяющиеся записи. Однако если вы создали индекс-кандидат для поля, поддерживающего значения NULL, Visual FoxPro не будет генерировать ошибку. Ошибка будет сгенерирована в том случае, когда вы попытаетесь ввести в поле, используемое для индекса-кандидата, значение NULL или повторяющееся значение.
NOCPTRANS
Запрещает преобразование содержимого символьных и memo-полей в другую кодовую страницу. Если курсор преобразуется в другую кодовую страницу, то поля, для которых задана опция NOCPTRANS, транслироваться не будут. NOCPTRANS можно указывать только для символьных и memo-полей.
В следующем примере создается курсор MYCURSOR, содержащий два символьных поля и два memo-поля. Для второго символьного поля CHAR2 и второго memo-поля 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.

Пример

* В следующем примере создается курсор с псевдонимом employee.
CLOSE DATABASES
CLEAR
CREATE CURSOR employee ;
	(Name C(20), Address C(30), City C(30), PostalCode C(10), ;
		Comments M)
? ALIAS( )
DISPLAY STRUCTURE

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 06.12.2002