Поделиться через


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
    Неотрицательное целое число, показывающее максимальное количество десятичных разрядов числа (как слева, так и справа от десятичного разделителя). Дополнительные сведения см. в разделе десятичные и числовые (Transact-SQL).

  • s
    Неотрицательное целое число, показывающее максимальное количество десятичных разрядов числа (справа от десятичного разделителя), которое не должно превышать точность. Дополнительные сведения см. в разделе десятичные и числовые (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 Servertimestamp, 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