sp_addtype (Transact-SQL)
Создает псевдоним типа данных.
Важно! |
---|
В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте инструкцию CREATE TYPE. |
Синтаксические обозначения Transact-SQL
Синтаксис
sp_addtype [ @typename = ] type,
[ @phystype = ] system_data_type
[ , [ @nulltype = ] 'null_type' ] ;
Аргументы
[ @typename= ] type
Имя типа данных псевдонима. Имена псевдонимов типа данных должны соответствовать правилам для идентификаторов и быть уникальными в каждой базе данных. Аргумент type имеет тип sysname и не имеет значения по умолчанию.[ @phystype=] system_data_type
Физический (предоставляемый SQL Server) тип данных, на котором основан тип данных псевдонима. Аргумент system_data_type имеет тип sysname и не имеет значения по умолчанию, и он может принимать одно из следующих значений:bigint
binary(n)
bit
char(n)
datetime
decimal
float
image
int
money
nchar(n)
ntext
numeric
nvarchar(n)
real
smalldatetime
smallint
smallmoney
sql_variant
text
tinyint
uniqueidentifier
varbinary(n)
varchar(n)
Кавычки необходимы для всех параметров, в которых содержатся начальные пробелы или знаки пунктуации. Дополнительные сведения о доступных типах данных см. в разделе Типы данных (Transact-SQL).
n
Неотрицательное целое число, которое показывает длину выбранного типа данных.P
Неотрицательное целое число, показывающее максимальное количество десятичных разрядов числа (как слева, так и справа от десятичного разделителя). Дополнительные сведения см. в разделе decimal и numeric (Transact-SQL).s
Неотрицательное целое число, показывающее максимальное количество десятичных разрядов числа (справа от десятичного разделителя), которое не должно превышать точность. Дополнительные сведения см. в разделе decimal и numeric (Transact-SQL).[ @nulltype = ] 'null_type'
Указывает, как псевдоним типа данных обрабатывает значения NULL. Аргумент null_type имеет тип varchar(8) со значением по умолчанию NULL и должен быть заключен в одинарные кавычки ('NULL', 'NOT NULL' или 'NONULL'). Если аргумент null_type не указывается в явном виде в процедуре sp_addtype, ему присваивается текущее значение параметра возможности по умолчанию иметь значения NULL. Для определения текущего значения параметра возможности по умолчанию иметь значения NULL используйте системную функцию NULLGETANSINULL. Его можно настраивать с помощью инструкции SET или ALTER DATABASE. Возможность иметь значения NULL необходимо задавать в явной форме. Если аргумент @phystype имеет тип bit, а аргумент @nulltype не указывается, по умолчанию используется значение NOT NULL.Примечание Аргумент null_type указывает возможность по умолчанию иметь значения NULL только для этого типа данных. Если возможность иметь значения NULL явно указывается для типа данных псевдонима при создании таблицы, эта настройка имеет приоритет над возможностью по умолчанию иметь значения NULL. Дополнительные сведения см. в разделах ALTER TABLE (Transact-SQL) и Инструкция CREATE TABLE (Transact-SQL).
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Результирующие наборы
Нет
Замечания
Имя типа данных псевдонима должно быть уникальным в базе данных, но типы данных псевдонима с различными именами могут иметь одно определение.
Выполнение процедуры sp_addtype позволяет создать тип данных псевдонима, отображаемый в представлении каталога sys.types для конкретной базы данных. Если тип данных псевдонима должен быть доступен в новых пользовательских базах данных, добавьте его в модель. После создания типа данных псевдонима его можно использовать в инструкциях CREATE TABLE и ALTER TABLE, а также привязывать значения по умолчанию и правила к нему. Все скалярные типы данных псевдонима, созданные процедурой sp_addtype, содержатся в схеме dbo.
Типы данных псевдонима наследуют параметры сортировки базы данных по умолчанию. Параметры сортировки столбцов и переменных типов псевдонима задаются в инструкциях Transact-SQL CREATE TABLE, ALTER TABLE и DECLARE @local\_variable. Изменение параметров сортировки по умолчанию базы данных применяется только к новым столбцам и переменным типа и не изменяет параметры сортировки существующих столбцов и переменных.
Примечание по безопасности |
---|
Роли public автоматически предоставляется разрешение REFERENCES для типов данных псевдонима, созданных процедурой sp_addtype, в целях обратной совместимости. Обратите внимание на то, что если типы данных псевдонима созданы инструкцией CREATE TYPE, а не процедурой sp_addtype, то это разрешение автоматически не предоставляется. |
Типы данных псевдонима нельзя задавать с помощью типов данных SQL Server timestamp, table, xml, varchar(max), nvarchar(max) и varbinary(max).
Разрешения
Необходимо членство в предопределенной роли базы данных db_owner или db_ddladmin.
Примеры
А.Создание псевдонима типа данных, не поддерживающего значения NULL
В следующем примере создается тип данных псевдонима с именем ssn (номер карточки социального страхования) на основе типа данных varchar, предоставляемого SQL Server. Тип данных ssn используется для столбцов, хранящих номера карточек социального страхования, состоящих из 11 разрядов (999-99-9999). Эти столбцы не могут иметь значение NULL.
Обратите внимание на то, что тип varchar(11) заключен в одинарные кавычки, поскольку содержит знак пунктуации (скобки).
USE master;
GO
EXEC sp_addtype ssn, 'varchar(11)', 'NOT NULL';
GO
Б.Создание псевдонима типа данных, поддерживающего значения NULL
В следующем примере создается тип данных псевдонима (на основе datetime) с именем birthday, который поддерживает значения NULL.
USE master;
GO
EXEC sp_addtype birthday, datetime, 'NULL';
В.Создание дополнительных псевдонимов типов данных
В следующем примере создается два дополнительных типа данных псевдонима, telephone и fax, служащих для внутренних и международных номеров телефонов и факсов.
USE master;
GO
EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL';
GO
EXEC sp_addtype fax, 'varchar(24)', 'NULL';
GO
См. также
Справочник
Хранимые процедуры ядра СУБД (Transact-SQL)