sp_addtype (Transact-SQL)

Se aplica a:SQL Server

Crea un tipo de datos de alias.

Importante

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

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_addtype
    [ @typename = ] N'typename'
    , [ @phystype = ] N'phystype'
    [ , [ @nulltype = ] 'nulltype' ]
    [ , [ @owner = ] N'owner' ]
[ ; ]

Argumentos

[ @typename = ] N'typename'

@typename es sysname, sin ningún valor predeterminado.

Nombre del tipo de datos de alias. Los nombres de tipo de datos de alias deben seguir las reglas de los identificadores y deben ser únicos en cada base de datos. type es sysname, sin valor predeterminado.

[ @phystype = ] N'phystype'

Tipo de datos físico o proporcionado por SQL Server en el que se basa el tipo de datos de alias. @phystype es sysname, sin valor predeterminado y puede ser uno de estos valores:

  • bigint, int, smallint y tinyint
  • binary, varbinary(n)e image
  • bit
  • char(n), nchar(n), varchar(n), nvarchar(n), **text y ntext
  • datetime y smalldatetime
  • decimales, P) y numéricos, P)
  • float y real
  • money y smallmoney
  • sql_variant
  • uniqueidentifier

Las comillas son necesarias en torno a todos los parámetros que contienen espacios en blanco incrustados o signos de puntuación. Para obtener más información sobre los tipos de datos disponibles, vea Tipos de datos (Transact-SQL).

  • n

    Entero no negativo que indica la longitud del tipo de datos elegido.

  • P

    Entero no negativo que indica el número total máximo de dígitos decimales que se pueden almacenar, tanto a la izquierda como a la derecha del separador decimal. Para más información, vea decimal y numeric (Transact-SQL).

  • s

    Entero no negativo que indica el número máximo de dígitos decimales que se pueden almacenar a la derecha del separador decimal y debe ser menor o igual que la precisión. Para más información, vea decimal y numeric (Transact-SQL).

[ @nulltype = ] 'nulltype'

Indica la forma en que el tipo de datos de alias trata los valores nulos. @nulltype es varchar(8), con un valor predeterminado de NULLy debe incluirse entre comillas simples ('NULL', 'NOT NULL'o 'NONULL').

Si @nulltype no se define explícitamente, se establece en la nulabilidad predeterminada actual. Use la función del GETANSINULL sistema para determinar la nulabilidad predeterminada actual. Esto se puede ajustar mediante la SET instrucción o ALTER DATABASE. La nulabilidad se tiene que definir explícitamente. Si @phystype es bit y no se especifica @nulltype , el valor predeterminado es NOT NULL.

Nota:

El parámetro @nulltype solo define la nulabilidad predeterminada para 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).

[ @owner = ] N'owner'

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Conjunto 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.

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

Los tipos de datos de alias heredan la intercalación predeterminada de la base de datos. Las intercalaciones de columnas y variables de tipos de alias se definen en las instrucciones Transact-SQL CREATE TABLE, ALTER TABLEy DECLARE @<local_variable> . Cambiar la intercalación predeterminada de la base de datos solo se aplica a las nuevas columnas y variables del tipo; no cambia la intercalación de las existentes.

Importante

Con fines de compatibilidad con versiones anteriores, el rol de base de datos pública se concede REFERENCES automáticamente permiso para los tipos de datos de alias creados mediante sp_addtype. Tenga en cuenta que cuando se crean tipos de datos de alias mediante la CREATE TYPE instrucción en lugar de sp_addtype, no se produce dicha concesión automática.

Los tipos de datos de alias no se pueden definir mediante la marca de tiempo de SQL Server, table, xml, varchar(max), nvarchar(max)o los tipos de datos varbinary(max).

Permisos

Requiere la pertenencia al rol fijo de base de datos db_owner o db_ddladmin .

Ejemplos

A Crear un tipo de datos de alias que no permita valores NULL

En el ejemplo siguiente se crea un tipo de datos de alias denominado ssn (número de seguridad social) basado en el tipo de datos varchar proporcionado por SQL Server. El ssn tipo de datos se usa para las columnas que contienen números de seguridad social de 11 dígitos (999-99-9999). La columna no puede ser NULL.

varchar(11) se incluye entre comillas simples porque contiene signos de puntuación (paréntesis).

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

B. Creación de un tipo de datos de alias que permita 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. Creación de tipos de datos de alias adicionales

En el ejemplo siguiente se crean dos tipos de datos de alias más, telephone y fax, para números de teléfono e fax nacionales e internacionales.

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