sp_special_columns (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Restituisce il set di colonne ottimale per l'identificazione univoca di una riga nella tabella. Restituisce inoltre le colonne che vengono aggiornate automaticamente quando qualsiasi valore della riga viene aggiornato tramite una transazione.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_special_columns
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ , [ @col_type = ] 'col_type' ]
[ , [ @scope = ] 'scope' ]
[ , [ @nullable = ] 'nullable' ]
[ , [ @ODBCVer = ] ODBCVer ]
[ ; ]
Argomenti
[ @table_name = ] N'table_name'
Nome della tabella utilizzata per restituire informazioni sul catalogo. @table_name è sysname, senza impostazione predefinita. La corrispondenza dei criteri con caratteri jolly non è supportata.
[ @table_owner = ] N'table_owner'
Proprietario della tabella utilizzata per restituire informazioni sul catalogo. @table_owner è sysname, con il valore predefinito NULL
. La corrispondenza dei criteri con caratteri jolly non è supportata. Se @table_owner non viene specificato, si applicano le regole di visibilità della tabella predefinite del sistema di gestione del database sottostante ( DBMS).
In SQL Server, se l'utente corrente è proprietario di una tabella con il nome specificato, vengono restituite le colonne della tabella. Se @table_owner non è specificato e l'utente corrente non possiede una tabella del @table_name specificato, questa procedura cerca una tabella del @table_name specificato di proprietà del proprietario del database. Se la tabella esiste, vengono restituite le colonne corrispondenti.
[ @table_qualifier = ] N'table_qualifier'
Nome del qualificatore di tabella. @table_qualifier è sysname, con un valore predefinito .NULL
Vari prodotti DBMS supportano la denominazione in tre parti per le tabelle (<qualifier>.<owner>.<name>
). In SQL Server questa colonna rappresenta il nome del database. In alcuni prodotti rappresenta il nome del server dell'ambiente di database della tabella.
[ @col_type = ] 'col_type'
Tipo di colonna. @col_type è char(1), con il valore predefinito R
.
Il tipo
R
restituisce la colonna o il set ottimale di colonne che, recuperando i valori dalla colonna o dalle colonne, consente l'identificazione univoca di qualsiasi riga nella tabella specificata. Una colonna può essere una pseudocolumn progettata per questo scopo oppure la colonna o le colonne di qualsiasi indice univoco per la tabella.Il tipo
V
restituisce la colonna o le colonne nella tabella specificata, se presenti, aggiornate automaticamente dall'origine dati quando qualsiasi valore nella riga viene aggiornato da qualsiasi transazione.
[ @scope = ] 'scope'
Ambito minimo obbligatorio dell'ID RIGA. @scope è char(1), con il valore predefinito T
.
- L'ambito
C
specifica che ROWID è valido solo quando è posizionato su tale riga. - L'ambito
T
specifica che ROWID è valido per la transazione.
[ @nullable = ] 'nullable'
Specifica se le colonne speciali possono accettare un NULL
valore. @nullable è char(1), con il valore predefinito U
.
O
specifica colonne speciali che non consentono valori Null.U
specifica le colonne parzialmente nullable.
[ @ODBCVer = ] ODBCVer
Versione ODBC utilizzata. @ODBCVer è int, con un valore predefinito .2
Questo valore indica ODBC versione 2.0. Per altre informazioni sulla differenza tra ODBC versione 2.0 e ODBC versione 3.0, vedere la specifica ODBC SQLSpecialColumns
per ODBC versione 3.0.
Valori del codice restituito
Nessuno.
Set di risultati
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
SCOPE |
smallint | Ambito effettivo dell'ID della riga. Può essere 0 , 1 o 2 . SQL Server restituisce 0 sempre . Questo campo restituisce sempre un valore.0 = SQL_SCOPE_CURROW . La validità dell'ID di riga è garantita solo mentre si è posizionati in tale riga. Una ridenominazione successiva utilizzando l'ID riga potrebbe non restituire una riga se la riga è stata aggiornata o eliminata da un'altra transazione.1 = SQL_SCOPE_TRANSACTION . La validità dell'ID di riga è garantita per l'intera durata della transazione corrente.2 = SQL_SCOPE_SESSION . La validità dell'ID della riga è garantita per l'intera durata della sessione (oltre i limiti delle transazioni). |
COLUMN_NAME |
sysname | Nome colonna per ogni colonna del @table_name restituito. Questo campo restituisce sempre un valore. |
DATA_TYPE |
smallint | Tipo di dati SQL ODBC. |
TYPE_NAME |
sysname | Nome del tipo di dati dipendente dall'origine dati; ad esempio char, varchar, money o text. |
PRECISION |
int | Precisione della colonna nell'origine dati. Questo campo restituisce sempre un valore. |
LENGTH |
int | Lunghezza, in byte, richiesta per il tipo di dati nel formato binario nell'origine dati, ad esempio, 10 per char(10), 4 per integer e 2 per smallint. |
SCALE |
smallint | Scala della colonna nell'origine dati. NULL viene restituito per i tipi di dati per cui la scalabilità non è applicabile. |
PSEUDO_COLUMN |
smallint | Indica se la colonna è una pseudocolonna. SQL Server restituisce 1 sempre :0 = SQL_PC_UNKNOWN 1 = SQL_PC_NOT_PSEUDO 2 = SQL_PC_PSEUDO |
Osservazioni:
sp_special_columns
equivale a SQLSpecialColumns
in ODBC. I risultati restituiti vengono ordinati in base a SCOPE
.
Autorizzazioni
È richiesta SELECT
l'autorizzazione per lo schema.
Esempi
Nell'esempio seguente vengono restituite informazioni sulla colonna che identifica in modo univoco le righe nella tabella HumanResources.Department
.
USE AdventureWorks2022;
GO
EXEC sp_special_columns @table_name = 'Department',
@table_owner = 'HumanResources';