Dans SQL Server, le OBJECTPROPERTYEX()
La fonction renvoie des informations sur les objets de portée de schéma dans la base de données actuelle.
Cette fonction fait exactement la même chose que OBJECTPROPERTY()
, sauf qu'il prend en charge davantage de propriétés et que la valeur de retour est différente. Le OBJECTPROPERTYEX()
la fonction renvoie un sql_variant type, alors que OBJECTPROPERTY()
renvoie un int saisir.
Syntaxe
La fonction accepte deux arguments :l'ID de l'objet et la propriété que vous souhaitez renvoyer.
OBJECTPROPERTYEX ( id , property )
Exemple 1 - Utilisation de base
Voici un exemple pour illustrer l'utilisation de base de cette fonction.
SELECT OBJECTPROPERTYEX('885578193', 'BaseType') AS Result;
Résultat :
+----------+ | Result | |----------| | U | +----------+
Dans ce cas, il y a un objet avec un ID de 885578193
et c'est une table. Le BaseType de cet objet est U.
Exemple 2 - Nommer l'objet
Dans l'exemple précédent, je connaissais l'ID de l'objet. Dans la plupart des cas, vous ne connaîtrez probablement que le nom de l'objet, mais pas son ID. Dans de tels cas, vous pouvez utiliser le OBJECT_ID()
fonction pour obtenir l'ID de l'objet, en fonction de son nom.
Comme ceci :
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'Artists'), 'BaseType') AS Result;
Résultat :
+----------+ | Result | |----------| | U | +----------+
Exemple 3 – Plus de propriétés
Voici un exemple qui renvoie plus de propriétés que vous ne recevrez pas avec OBJECTPROPERTY()
.
USE WideWorldImportersDW; DECLARE @objectId int = OBJECT_ID(N'Integration.GenerateDateDimensionColumns'); SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType, OBJECTPROPERTYEX(@objectId, 'IsPrecise') AS IsPrecise, OBJECTPROPERTYEX(@objectId, 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') AS UserDataAccess;
Résultat :
+------------+-------------+--------------------+------------------+ | BaseType | IsPrecise | SystemDataAccess | UserDataAccess | |------------+-------------+--------------------+------------------| | IF | 0 | 1 | 1 | +------------+-------------+--------------------+------------------+
Au moment de l'écriture, le OBJECTPROPERTYEX()
la fonction prend en charge 109 propriétés. Voir ci-dessous pour une liste complète des propriétés prises en charge par cette fonction.
Exemple 4 – Dans une clause WHERE
Vous pouvez utiliser OBJECTPROPERTYEX()
dans un WHERE
clause si nécessaire.
Dans cet exemple, j'exécute deux requêtes :une qui renvoie les tables qui ont une clé étrangère et une qui renvoie les tables qui sont référencées par une clé étrangère.
USE Music; SELECT SCHEMA_NAME(schema_id) AS [Schema], name AS [Table] FROM sys.tables WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignKey') = 1; SELECT SCHEMA_NAME(schema_id) AS [Schema], name AS [Table] FROM sys.tables WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignRef') = 1;
Résultat :
Changed database context to 'Music'. +----------+---------+ | Schema | Table | |----------+---------| | dbo | Artists | | dbo | Albums | +----------+---------+ (2 rows affected) +----------+---------+ | Schema | Table | |----------+---------| | dbo | Artists | | dbo | Genres | | dbo | Country | +----------+---------+ (3 rows affected)
Liste complète des propriétés
Voici une liste complète des propriétés prises en charge par le OBJECTPROPERTYEX()
fonction :
- Type de base
- CnstIsClustKey
- CnstIsColumn
- CnstIsDeleteCascade
- CnstIsDisabled
- CnstIsNonclustKey
- CnstIsNotRepl
- CnstIsNotTrusted
- CnstIsUpdateCascade
- ExecIsAfterTrigger
- ExecIsAnsiNullsOn
- ExecIsDeleteTrigger
- ExecIsFirstDeleteTrigger
- ExecIsFirstInsertTrigger
- ExecIsFirstUpdateTrigger
- ExecIsInsertTrigger
- ExecIsInsteadOfTrigger
- ExecIsLastDeleteTrigger
- ExecIsLastInsertTrigger
- ExecIsLastUpdateTrigger
- ExecIsQuotedIdentOn
- ExecIsStartup
- ExecIsTriggerDisabled
- ExecIsTriggerNotForRepl
- ExecIsUpdateTrigger
- ExecIsWithNativeCompilation
- HasAfterTrigger
- HasDeleteTrigger
- HasInsertTrigger
- HasInsteadOfTrigger
- HasUpdateTrigger
- EstAnsiNullsOn
- IsCheckCnst
- IsConstraint
- EstParDéfaut
- IsDefaultCnst
- Est déterministe
- IsEncrypted
- Est exécuté
- IsExtendedProc
- IsForeignKey
- Est indexé
- Est indexable
- IsInlineFunction
- IsMSShipped
- Est précis
- IsPrimaryKey
- EstProcédure
- IsQuotedIdentOn
- EstQueue
- IsReplProc
- EstRègle
- IsScalarFunction
- IsSchemaBound
- IsSystemTable
- IsSystemVerified
- EstTable
- EstTableFonction
- EstTrigger
- IsUniqueCnst
- IsUserTable
- IsView
- Identifiant du propriétaire
- ID de schéma
- Accès aux données système
- TableDeleteTrigger
- TableDeleteTriggerCount
- TableFullTextMergeStatus
- TableFullTextBackgroundUpdateIndexOn
- TableFulltextCatalogId
- TableFullTextChangeTrackingOn
- TableFulltextDocsProcessed
- TableFulltextFailCount
- TableFulltextItemCount
- TableFulltextKeyColumn
- TableFulltextPendingChanges
- TableFulltextPopulateStatus
- TableFullTextSemanticExtraction
- TableHasActiveFulltextIndex
- TableHasCheckCnst
- TableHasClustIndex
- TableHasDefaultCnst
- TableHasDeleteTrigger
- TableHasForeignKey
- TableHasForeignRef
- TableHasIdentity
- TableHasIndex
- TableHasInsertTrigger
- TableHasNonclustIndex
- TableHasPrimaryKey
- TableHasRowGuidCol
- TableHasTextImage
- TableHasTimestamp
- TableHasUniqueCnst
- TableHasUpdateTrigger
- TableHasVarDecimalStorageFormat
- TableInsertTrigger
- TableInsertTriggerCount
- TableIsFake
- TableIsLockedOnBulkLoad
- TableIsMemoryOptimized
- TableIsPinned
- TableTextInRowLimit
- TableUpdateTrigger
- TableUpdateTriggerCount
- Accès aux données utilisateur
- TableHasColumnSet
- Cardinalité
- TableTemporalType
Consultez la documentation Microsoft pour une explication détaillée de chaque propriété.
Voir aussi OBJECTPROPERTY()
vs OBJECTPROPERTYEX()
pour une explication plus détaillée des différences entre ces deux fonctions.