In SQL Server, COLUMNPROPERTY()
la funzione restituisce informazioni sulla colonna o sul parametro.
Ad esempio, puoi usarlo per restituire informazioni su una colonna in una tabella, un parametro per una procedura memorizzata, ecc
Accetta tre argomenti:l'ID della tabella o della procedura, la colonna o il parametro applicabile e la proprietà su cui desideri informazioni.
Sintassi
La sintassi è questa:
COLUMNPROPERTY ( id , column , property )
Esempio 1 – Interrogare una tabella
In questo esempio, ottengo informazioni su una colonna all'interno di una tabella.
USE Music; SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Risultato:
+----------+ | Result | |----------| | 0 | +----------+
In questo caso, la colonna ArtistId non consente valori NULL.
Passiamo a un'altra colonna:
SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Scale') AS [Scale];
Risultato:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
In questo caso, la colonna ActiveFrom consente valori NULL. Ha anche una precisione di 10 e una scala di 0.
Noterai che utilizzo OBJECT_ID()
funzione per restituire l'ID della tabella. Senza questa funzione, avrei bisogno di conoscere l'ID (o dovrei fare un'altra query solo per ottenere l'ID).
Ecco cosa OBJECT_ID()
restituisce nell'esempio sopra:
SELECT OBJECT_ID('Artists') AS Result;
Risultato:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Quindi ora che conosciamo l'ID, possiamo passarlo a COLUMNPROPERTY()
funzione invece:
SELECT COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
Risultato:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Esempio 2 – Interrogare una procedura
In questo esempio, ottengo informazioni su un parametro di una procedura memorizzata.
USE Music; SELECT COLUMNPROPERTY( OBJECT_ID('dbo.uspGetAlbumsByArtist'), '@ArtistId', 'IsOutParam') AS [Result];
Risultato:
+----------+ | Result | |----------| | 0 | +----------+
Quindi è esattamente la stessa sintassi. In questo caso, il parametro @ArtistId
non è un parametro di output.
Elenco completo delle opzioni
Ecco un elenco completo di argomenti che puoi passare a COLUMNPROPERTY()
nel momento in cui scrivo:
- Consente Null
- ColumnId
- FullTextTypeColumn
- GeneratoAlwaysType
- IsColumnSet
- È calcolato
- TipoCursore
- È deterministico
- IsFulltextIndexed
- È nascosto
- È l'identità
- IsIdNotForRepl
- È indicizzabile
- Parametro IsOut
- È preciso
- IsRowGuidCol
- È sparso
- IsSystemVerified
- IsXmlIndexable
- Precisione
- Bilancia
- Semantica Statistica
- Accesso ai dati di sistema
- Accesso ai dati utente
- Utilizza AnsiTrim
Consulta la documentazione Microsoft per una spiegazione dettagliata di ciascuna proprietà.
Vedi anche OBJECTPROPERTYEX()
per una funzione simile che restituisce informazioni sugli oggetti con ambito schema anziché sui database e DATABASEPROPERTYEX()
che restituisce informazioni sulla proprietà per i database.