Condividi tramite


sp_addtype (Transact-SQL)

Crea un tipo di dati alias.

Nota importanteImportante

Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Utilizzare l'istruzione CREATE TYPE in alternativa.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • [ @typename= ] type
    Nome del tipo di dati alias. I nomi dei tipi di dati alias devono essere conformi alle regole per gli identificatori e devono essere univoci in ogni database. type è di tipo sysname e non prevede alcun valore predefinito.

  • [ @phystype=] system_data_type
    Tipo di dati fisico o di SQL Server su cui è basato il tipo di dati alias. system_data_type è di tipo sysname e non prevede alcun valore predefinito. I possibili valori sono i seguenti:

    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)

    È necessario racchiudere tra virgolette tutti i parametri che includono spazi vuoti o segni di punteggiatura. Per ulteriori informazioni sui tipi di dati disponibili, vedere Tipi di dati (Transact-SQL).

  • n
    Valore integer non negativo che indica la lunghezza del tipo di dati scelto.

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

  • s
    Valore integer non negativo che indica il numero massimo di cifre decimali che è possibile archiviare a destra del separatore decimale. Deve essere minore o uguale al valore della precisione. Per ulteriori informazioni, vedere decimal e numeric (Transact-SQL).

  • [ @nulltype = ] 'null_type'
    Indica la modalità di gestione dei valori Null per il tipo di dati alias. null_type è di tipo varchar(8) e il valore predefinito è NULL. Questo argomento deve essere racchiuso tra virgolette singole, ad esempio 'NULL', 'NOT NULL' o 'NONULL'. Se null_type non viene definito in modo esplicito tramite sp_addtype, viene applicata l'impostazione predefinita corrente per il supporto dei valori Null. Utilizzare la funzione di sistema GETANSINULL per determinare l'impostazione predefinita corrente per il supporto dei valori Null. Questa impostazione può essere modificata tramite l'istruzione SET o ALTER DATABASE. L'impostazione relativa al supporto dei valori Null deve essere definita in modo esplicito. Se @phystype è di tipo bit e @nulltype viene omesso, l'impostazione predefinita è NOT NULL.

    [!NOTA]

    Il parametro null_type definisce solo l'impostazione predefinita per il supporto dei valori Null 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 ulteriori informazioni, vedere ALTER TABLE (Transact-SQL) e CREATE TABLE (Transact-SQL).

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

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 di sp_addtype crea un tipo di dati alias che viene visualizzato nella vista del catalogo sys.types per un database specifico. Se si desidera rendere disponibile il tipo di dati alias in tutti i nuovi database definiti dall'utente, aggiungerlo a model. Dopo avere creato un tipo di dati alias, è possibile utilizzarlo in un'istruzione CREATE TABLE o ALTER TABLE e associarvi valori predefiniti e regole. Tutti i tipi di dati alias scalari creati tramite sp_addtype sono inclusi nello schema dbo.

I tipi di dati alias ereditano le regole di confronto predefinite del database. Le regole di confronto delle colonne e delle variabili di tipi alias vengono definite nelle istruzioni Transact-SQL CREATE TABLE, ALTER TABLE e DECLARE @local\_variable. Le modifiche apportate alle regole di confronto predefinite del database vengono applicate solo alle nuove colonne e variabili del tipo. Le regole di confronto delle colonne e delle variabili esistenti non vengono modificate.

Nota sulla protezioneNota sulla protezione

Per motivi di compatibilità con le versioni precedenti, al ruolo del database public viene concessa automaticamente l'autorizzazione REFERENCES per i tipi di dati alias creati tramite sp_addtype. Si noti che quando vengono creati tipi di dati alias tramite l'istruzione CREATE TYPE anziché la stored procedure sp_addtype, questa assegnazione automatica non ha luogo.

Non è possibile definire tipi di dati alias basati sul tipo di dati SQL Servertimestamp, table, xml, varchar(max), nvarchar(max) o varbinary(max).

Autorizzazioni

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

Esempi

A. Creazione di un tipo di dati alias che non consente valori Null

Nell'esempio seguente viene creato un tipo di dati alias denominato ssn (Numero previdenza sociale, Social Security Number) basato sul tipo di dati di SQL Servervarchar. Il tipo di dati ssn viene utilizzato per colonne contenenti numeri di previdenza sociale a 11 cifre (999-99-9999). Questa colonna non può contenere valori NULL.

Si noti che varchar(11) è racchiuso tra virgolette singole in quanto contiene segni di punteggiatura (le parentesi).

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

A. Creazione di un tipo di dati alias che consente 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. Creazione di tipi di dati alias aggiuntivi

Nell'esempio seguente vengono creati due tipi di dati alias aggiuntivi, telephone e fax, per i numeri di telefono e di fax nazionali e internazionali.

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