sp_addtype (Transact-SQL)

Crea un tipo de datos de alias.

Nota importanteImportante

Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. En su lugar, utilice CREATE TYPE.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_addtype [ @typename = ] type, 
    [ @phystype = ] system_data_type 
    [ , [ @nulltype = ] 'null_type' ] ;

Argumentos

  • [ @typename= ] type
    Es el nombre del tipo de datos de alias. Los nombres de los tipos de datos de alias tienen que seguir las reglas de los identificadores y deben ser exclusivos en cada base de datos. type es de tipo sysname y no tiene valor predeterminado.

  • [ @phystype=] system_data_type
    Es el tipo de datos físico, o proporcionado por SQL Server, en el que se basa el tipo de datos de alias. system_data_type es de tipo sysname, no tiene valor predeterminado y puede tener uno de estos valores:

    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)

    Se requieren comillas para delimitar los parámetros que tengan espacios o signos de puntuación incrustados. Para obtener más información acerca de los tipos de datos disponibles, vea Tipos de datos (Transact-SQL).

  • n
    Es un entero no negativo que indica la longitud del tipo de datos elegido.

  • P
    Es un entero no negativo que indica el número total máximo de cifras decimales que se pueden almacenar, a ambos lados del separador decimal. Para obtener más información, vea decimal y numeric (Transact-SQL).

  • s
    Es un entero no negativo que indica el número máximo de cifras decimales que se pueden almacenar a la derecha del separador decimal, y tiene que ser menor que la precisión decimal o igual a ésta. Para obtener más información, vea decimal y numeric (Transact-SQL).

  • [ @nulltype = ] 'null_type'
    Indica la forma en que el tipo de datos de alias trata los valores nulos. null_type es de tipo varchar(8), su valor predeterminado es NULL y tiene que estar entre comillas simples (‘NULL’, ‘NOT NULL’ o ‘NONULL’). Si no se define explícitamente null_type en sp_addtype, se establece según la nulabilidad predeterminada actual.Utilice la función de sistema GETANSINULL para determinar la nulabilidad predeterminada actual. Esto se puede ajustar mediante la instrucción SET o ALTER DATABASE. La nulabilidad se tiene que definir explícitamente. Si @phystype es de tipo bit y @nulltype no se especifica, el valor predeterminado es NOT NULL.

    Nota

    El parámetro null_type sólo define la nulabilidad predeterminada de este tipo de datos.Si la nulabilidad se define explícitamente cuando se utiliza este tipo de datos de alias durante la creación de una tabla, ésta tendrá prioridad sobre la nulabilidad definida. Para obtener más información, vea ALTER TABLE (Transact-SQL) y CREATE TABLE (Transact-SQL).

Valores de código de retorno

0 (correcto) o 1 (error)

Conjuntos de resultados

Ninguno

Comentarios

Los nombres de los tipos de datos de alias tienen que ser exclusivos en la base de datos, pero tipos de datos de alias con distintos nombres pueden tener la misma definición.

La ejecución de sp_addtype crea un tipo de datos de alias que aparece en la vista de catálogo sys.types para una base de datos específica. Si el tipo de datos de alias tiene que estar disponible en todas las nuevas bases de datos definidas por el usuario, agréguelo a model. Después de crear un tipo de datos de alias, puede utilizarse en CREATE TABLE o ALTER TABLE, así como enlazarse a valores predeterminados y reglas. Todos los tipos de datos de alias escalares que se crean mediante sp_addtype están contenidos en el esquema dbo.

Los tipos de datos de alias heredan la intercalación predeterminada de la base de datos. La intercalación de columnas y variables de tipos de alias se definen en las instrucciones Transact-SQL CREATE TABLE, ALTER TABLE y DECLARE @local_variable.Cualquier cambio en la intercalación predeterminada de la base de datos sólo se aplica a las columnas y variables nuevas del tipo; no afecta la intercalación de los tipos existentes.

Nota de seguridadNota de seguridad

Por compatibilidad con versiones anteriores, a la función de base de datos public se le concede automáticamente el permiso REFERENCES sobre los tipos de datos de alias que se crean mediante sp_addtype. Tenga en cuenta que cuando los tipos de datos de alias se crean con la instrucción CREATE TYPE en lugar de sp_addtype, ese permiso no se concede automáticamente.

Los tipos de datos de alias no se pueden definir con los tipos de datos timestamp, table, xml, varchar(max), nvarchar(max) o varbinary(max) de SQL Server.

Permisos

Requiere la pertenencia a las funciones fijas de base de datos db_owner o db_ddladmin.

Ejemplos

A. Crear un tipo de datos de alias que no permite valores NULL

En el ejemplo siguiente se crea un tipo de datos de alias denominado ssn (número de la seguridad social) que se basa en el tipo de datos varchar proporcionado por SQL Server. El tipo de datos ssn se utiliza en columnas que almacenan números de la seguridad social de 11 cifras (999-99-9999). La columna no puede ser NULL.

Observe que varchar(11) está entre comillas simples porque contiene signos de puntuación (paréntesis).

USE master;
GO
EXEC sp_addtype ssn, 'varchar(11)', 'NOT NULL';
GO

A. Crear un tipo de datos de alias que permite valores NULL

En este ejemplo se crea un tipo de datos de alias (basado en el tipo de datos datetime) denominado birthday que permite valores NULL.

USE master;
GO
EXEC sp_addtype birthday, datetime, 'NULL';

C. Crear tipos de datos de alias adicionales

En este ejemplo se crean dos tipos de datos de alias adicionales, telephone y fax, para números de teléfono y fax locales e internacionales.

USE master;
GO
EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL';
GO
EXEC sp_addtype fax, 'varchar(24)', 'NULL';
GO