sp_addtype (Transact-SQL)

Si applica a:SQL Server

Crea un tipo di dati alias.

Importante

Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. In alternativa, usare CREATE TYPE .

Convenzioni di sintassi Transact-SQL

Sintassi

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

Argomenti

[ @typename = ] N'typename'

@typename è sysname, senza impostazione predefinita.

Nome del tipo di dati alias. I nomi dei tipi di dati alias devono seguire le regole per gli identificatori e devono essere univoci in ogni database. type è sysname, senza impostazione predefinita.

[ @phystype = ] N'phystype'

Tipo di dati fisico, o SQL Server fornito, su cui si basa il tipo di dati alias. @phystype è sysname, senza impostazione predefinita e può essere uno di questi valori:

  • bigint, int, smallint e tinyint
  • binary, varbinary(n)e image
  • bit
  • char(n), nchar(n), varchar(n), nvarchar(n), **text e ntext
  • datetime e smalldatetime
  • decimal(s, P) e numeric(s, P)
  • float e real
  • money e smallmoney
  • sql_variant
  • uniqueidentifier

Le virgolette sono necessarie intorno a tutti i parametri che contengono spazi vuoti incorporati o segni di punteggiatura. Per altre informazioni sui tipi di dati disponibili, vedere Tipi di dati (Transact-SQL).

  • n

    Intero non negativo che indica la lunghezza per il tipo di dati scelto.

  • P

    Intero non negativo che indica il numero totale massimo di cifre decimali che è possibile archiviare, sia a sinistra che a destra del separatore decimale. Per altre informazioni, vedere decimal e numeric (Transact-SQL).

  • s

    Intero non negativo che indica il numero massimo di cifre decimali che possono essere archiviate a destra del separatore decimale e deve essere minore o uguale alla precisione. Per altre informazioni, vedere decimal e numeric (Transact-SQL).

[ @nulltype = ] 'nulltype'

Viene indicata la modalità di gestione dei valori Null per il tipo di dati alias. @nulltype è varchar(8), con un valore predefinito , NULLe deve essere racchiuso tra virgolette singole ('NULL', 'NOT NULL'o 'NONULL').

Se @nulltype non è definito in modo esplicito, viene impostato sul valore Nullbility predefinito corrente. Usare la GETANSINULL funzione di sistema per determinare il valore Nullbility predefinito corrente. Questa operazione può essere modificata usando l'istruzione SET o ALTER DATABASE. L'impostazione relativa al supporto dei valori Null deve essere definita in modo esplicito. Se @phystype è bit e @nulltype non viene specificato, il valore predefinito è NOT NULL.

Nota

Il parametro @nulltype definisce solo il valore Nullbility predefinito per questo tipo di dati. Se l'impostazione per il supporto dei valori Null viene definita in modo esplicito quando si utilizza il tipo di dati alias durante la creazione di tabelle, questo valore sarà prioritario rispetto all'impostazione predefinita. Per altre informazioni, vedere ALTER TABLE (Transact-SQL) e CREATE TABLE (Transact-SQL).

[ @owner = ] N'owner'

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Set di risultati

Nessuno.

Osservazioni:

Il nome di un tipo di dati alias deve essere univoco all'interno del database, ma è possibile utilizzare la stessa definizione per tipi di dati alias con nomi diversi.

L'esecuzione sp_addtype crea un tipo di dati alias visualizzato nella vista del sys.types catalogo per un database specifico. Se il tipo di dati alias deve essere disponibile in tutti i nuovi database definiti dall'utente, aggiungerlo a model. Dopo aver creato un tipo di dati alias, è possibile usarlo in CREATE TABLE o ALTER TABLEe associare anche le impostazioni predefinite e le regole al tipo di dati alias. Tutti i tipi di dati alias scalari creati tramite sp_addtype sono contenuti nello dbo schema.

I tipi di dati alias ereditano le regole di confronto predefinite del database. Le regole di confronto delle colonne e delle variabili dei tipi alias sono definite nelle istruzioni Transact-SQL CREATE TABLE, ALTER TABLEe DECLARE @<local_variable> . La modifica delle regole di confronto predefinite del database si applica solo alle nuove colonne e alle variabili del tipo; non modifica le regole di confronto di quelle esistenti.

Importante

Ai fini della compatibilità con le versioni precedenti, al ruolo del database pubblico viene concessa REFERENCES automaticamente l'autorizzazione per i tipi di dati alias creati tramite sp_addtype. Si noti che quando vengono creati tipi di dati alias usando l'istruzione CREATE TYPE anziché sp_addtype, non viene eseguita alcuna concessione automatica di questo tipo.

I tipi di dati alias non possono essere definiti usando i tipi di dati timestamp di SQL Server, table, xml, varchar(max), nvarchar(max)o varbinary(max).

Autorizzazioni

Richiede l'appartenenza al ruolo predefinito del database db_owner o db_ddladmin .

Esempi

R. Creare un tipo di dati alias che non consente valori Null

Nell'esempio seguente viene creato un tipo di dati alias denominato ssn (numero di previdenza sociale) basato sul tipo di dati varchar fornito da SQL Server. Il ssn tipo di dati viene utilizzato per le colonne che contengono numeri di previdenza sociale a 11 cifre (999-99-9999). La colonna non può essere NULL.

varchar(11) è racchiuso tra virgolette singole perché contiene punteggiatura (parentesi).

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

B. Creare un tipo di dati alias che consenta valori Null

Nell'esempio seguente viene creato un tipo di dati alias basato sul tipo di dati datetime e denominato birthday che consente valori Null.

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

C. Creare tipi di dati alias aggiuntivi

Nell'esempio seguente vengono creati altri due tipi di dati alias e telephonefax, sia per i numeri di telefono sia nazionali che internazionali.

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