In SQL Server, il OBJECTPROPERTYEX()
La funzione restituisce informazioni sugli oggetti con ambito schema nel database corrente.
Questa funzione fa esattamente la stessa cosa di OBJECTPROPERTY()
, tranne per il fatto che supporta più proprietà e il valore restituito è diverso. Il OBJECTPROPERTYEX()
la funzione restituisce una variante_sql tipo, mentre OBJECTPROPERTY()
restituisce un int digitare.
Sintassi
La funzione accetta due argomenti:l'ID dell'oggetto e la proprietà che vuoi restituire.
OBJECTPROPERTYEX ( id , property )
Esempio 1 – Utilizzo di base
Ecco un esempio per dimostrare l'utilizzo di base di questa funzione.
SELECT OBJECTPROPERTYEX('885578193', 'BaseType') AS Result;
Risultato:
+----------+ | Result | |----------| | U | +----------+
In questo caso, c'è un oggetto con un ID 885578193
ed è un tavolo Il BaseType di questo oggetto è U.
Esempio 2 – Assegnare un nome all'oggetto
Nell'esempio precedente, conoscevo l'ID dell'oggetto. Nella maggior parte dei casi probabilmente conoscerai solo il nome dell'oggetto, ma non il suo ID. In questi casi, puoi utilizzare OBJECT_ID()
funzione per ottenere l'ID dell'oggetto, in base al suo nome.
In questo modo:
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'Artists'), 'BaseType') AS Result;
Risultato:
+----------+ | Result | |----------| | U | +----------+
Esempio 3 – Altre proprietà
Ecco un esempio che restituisce più proprietà che non ti verranno restituite con 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;
Risultato:
+------------+-------------+--------------------+------------------+ | BaseType | IsPrecise | SystemDataAccess | UserDataAccess | |------------+-------------+--------------------+------------------| | IF | 0 | 1 | 1 | +------------+-------------+--------------------+------------------+
Al momento della scrittura, il OBJECTPROPERTYEX()
la funzione supporta 109 proprietà. Vedi sotto per un elenco completo delle proprietà supportate da questa funzione.
Esempio 4 – In una clausola WHERE
Puoi usare OBJECTPROPERTYEX()
in un WHERE
clausola se richiesta.
In questo esempio, eseguo due query:una che restituisce tabelle che hanno una chiave esterna e una che restituisce tabelle a cui fa riferimento una chiave esterna.
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;
Risultato:
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)
Elenco completo delle proprietà
Ecco un elenco completo delle proprietà supportate da OBJECTPROPERTYEX()
funzione:
- Tipo 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
- HaDeleteTrigger
- HasInsertTrigger
- HasInsteadOfTrigger
- Ha UpdateTrigger
- IsAnsiNullsOn
- IsCheckCnst
- È un vincolo
- È predefinito
- IsDefaultCnst
- È deterministico
- È crittografato
- Eseguito
- IsExtendedProc
- ÈForeignKey
- È indicizzato
- È indicizzabile
- Funzione IsInline
- È spedito
- È preciso
- È la chiave primaria
- È una procedura
- IsQuotedIdentOn
- È in coda
- IsReplProc
- È la regola
- Funzione IsScalar
- IsSchemaBound
- IsSystemTable
- IsSystemVerified
- È la tabella
- Funzione IsTable
- È Trigger
- IsUniqueCnst
- IsUserTable
- IsView
- ID proprietario
- SchemaId
- Accesso ai dati di sistema
- 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
- Accesso ai dati utente
- TableHasColumnSet
- Cardinalità
- TipoTableTemporal
Consulta la documentazione Microsoft per una spiegazione dettagliata di ciascuna proprietà.
Vedi anche OBJECTPROPERTY()
rispetto a OBJECTPROPERTYEX()
per una spiegazione più dettagliata delle differenze tra queste due funzioni.