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 relative alla 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.
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.
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.
[ @nulltype = ] 'nulltype'
Viene indicata la modalità di gestione dei valori Null per il tipo di dati alias. @nulltype è varchar(8), con un valore predefinito , NULL
e 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 e CREATE TABLE.
[ @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 TABLE
e 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 TABLE
e 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 telephone
fax
, 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
Contenuto correlato
- stored procedure motore di database (Transact-SQL)
- CREATE TYPE (Transact-SQL)
- CREATE DEFAULT (Transact-SQL)
- CREATE RULE (Transact-SQL)
- sp_bindefault (Transact-SQL)
- sp_bindrule (Transact-SQL)
- sp_droptype (Transact-SQL)
- sp_rename (Transact-SQL)
- sp_unbindefault (Transact-SQL)
- sp_unbindrule (Transact-SQL)
- Stored procedure di sistema (Transact-SQL)