sp_addtype (Transact-SQL)
Crée un type de données alias.
Important
Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez au lieu de cela CREATE TYPE.
Syntaxe
sp_addtype [ @typename = ] type,
[ @phystype = ] system_data_type
[ , [ @nulltype = ] 'null_type' ] ;
Arguments
[ @typename= ] type
Nom du type de données alias. Les noms des types de données alias doivent respecter les règles appliquées aux identificateurs et doivent être uniques dans chaque base de données. L'argument type est de type sysname, sans valeur par défaut.[ @phystype=] system_data_type
Type de données physique ou fourni par SQL Server sur lequel est basé le type de données défini par l'utilisateur. system_data_type est de type sysname, sans valeur par défaut. Il peut prendre l'une des valeurs suivantes :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)
Les guillemets sont obligatoires pour tous les paramètres comportant des espaces ou des signes de ponctuation. Pour plus d'informations sur les types de données disponibles, consultez Types de données (Transact-SQL).
n
Entier non négatif qui indique la longueur du type de données choisi.P
Entier non négatif qui indique le nombre total maximal de chiffres d'un nombre décimal pouvant figurer à gauche et à droite de la virgule décimale. Pour plus d'informations, consultez decimal et numeric (Transact-SQL).s
Entier non négatif qui indique le nombre maximal de décimales qui peuvent figurer à droite d'une virgule décimale ; il doit être inférieur ou égal à la précision. Pour plus d'informations, consultez decimal et numeric (Transact-SQL).[ @nulltype = ] 'null_type'
Indique la manière dont le type de données alias gère les valeurs NULL. null_type est de type varchar(8), avec NULL comme valeur par défaut. Cet élément doit figurer entre guillemets simples ('NULL', 'NOT NULL' ou 'NONULL'). Si null_type n'est pas explicitement défini par sp_addtype, il est défini en fonction de ce qui est défini par défaut quant à la possibilité de valeurs NULL. Utilisez la fonction système GETANSINULL pour déterminer la possibilité de valeurs NULL actuellement définie. Il est possible d'ajuster cette valeur au moyen de l'instruction SET ou ALTER DATABASE. La possibilité de valeurs NULL doit être définie explicitement. Si @phystype est de type bit et si @nulltype n'est pas spécifié, la valeur par défaut est NOT NULL.Notes
Le paramètre null_type définit seulement la possibilité d'utiliser par défaut les valeurs NULL pour ce type de données. Si la possibilité d'utiliser des valeurs NULL est explicitement définie quand le type de données alias est utilisé lors de la création de la table, elle est prioritaire sur la possibilité de valeurs NULL actuellement définie. Pour plus d'informations, consultez ALTER TABLE (Transact-SQL) et CREATE TABLE (Transact-SQL).
Valeurs des codes renvoyés
0 (succès) ou 1 (échec)
Ensembles de résultats
Aucun
Notes
Un nom de type de données alias doit être unique dans la base de données. Cependant, plusieurs types de données alias portant des noms différents peuvent avoir la même définition.
L'exécution de sp_addtype crée un type de données alias qui figure dans la vue de catalogue sys.types pour une base de données particulière. Si le type de données alias doit être disponible dans toutes les nouvelles bases de données définies par l'utilisateur, ajoutez-le à model. Lorsque qu'un type de données alias est créé, vous pouvez l'utiliser dans CREATE TABLE ou ALTER TABLE, et y lier des valeurs par défaut et des règles. Tous les types de données alias scalaires créés avec sp_addtype sont contenus dans le schéma dbo.
Tous les types de données alias héritent du classement par défaut de la base de données. Les classements des colonnes et des variables du type de données alias sont définis dans les instructions Transact-SQL CREATE TABLE, ALTER TABLE et DECLARE @local_variable. La modification du classement par défaut de la base de données s'applique seulement aux nouvelles colonnes et variables de ce type ; elle ne modifie pas le classement des colonnes et des variables existantes.
Remarque relative à la sécurité |
---|
Pour des raisons de compatibilité descendante, le rôle de base de données public reçoit automatiquement l'autorisation REFERENCES sur tous les types de données alias créés avec sp_addtype. Notez que lorsque des types de données alias sont créés avec l'instruction CREATE TYPE au lieu de sp_addtype, cette attribution d'autorisation automatique n'a pas lieu. |
Il n'est pas possible de définir des types de données alias avec les types de données SQL Servertimestamp, table, xml, varchar(max), nvarchar(max) ou varbinary(max).
Autorisations
Nécessite l'appartenance aux rôles de base de données fixes db_owner ou db_ddladmin.
Exemples
A. Création d'un type de données alias qui n'accepte pas les valeurs NULL
L'exemple suivant crée un type de données alias appelé ssn (numéro de sécurité sociale) basé sur le type de données varchar fourni par SQL Server. Le type de données ssn est utilisé pour les colonnes comportant des numéros de sécurité sociale à 11 chiffres (999-99-9999). Cette colonne ne peut pas avoir la valeur NULL.
Notez que varchar(11) est spécifié entre guillemets car il contient des signes de ponctuation (parenthèses).
USE master;
GO
EXEC sp_addtype ssn, 'varchar(11)', 'NOT NULL';
GO
B. Création d'un type de données alias qui autorise les valeurs NULL
L'exemple suivant crée un type de données alias (basé sur datetime) appelé birthday, qui autorise les valeurs NULL.
USE master;
GO
EXEC sp_addtype birthday, datetime, 'NULL';
C. Création d'autres types de données alias
L'exemple suivant crée deux autres types de données alias, telephone et fax, pour des numéros de téléphone et de télécopie nationaux et internationaux.
USE master;
GO
EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL';
GO
EXEC sp_addtype fax, 'varchar(24)', 'NULL';
GO
Voir aussi