sp_special_columns (Transact-SQL)
Restituisce il set di colonne ottimale per l'identificazione univoca di una riga nella tabella. Restituisce inoltre le colonne aggiornate automaticamente in corrispondenza dell'aggiornamento di qualsiasi valore della riga tramite una transazione.
Convenzioni della sintassi Transact-SQL
Sintassi
sp_special_columns [ @table_name = ] 'table_name'
[ , [ @table_owner = ] 'table_owner' ]
[ , [ @qualifier = ] 'qualifier' ]
[ , [ @col_type = ] 'col_type' ]
[ , [ @scope = ] 'scope' ]
[ , [ @nullable = ] 'nullable' ]
[ , [ @ODBCVer = ] 'ODBCVer' ]
[ ; ]
Argomenti
[ @table\_name=\] 'table_name'
Nome della tabella utilizzata per restituire informazioni sul catalogo. name è di tipo sysname e non prevede alcun valore predefinito. I criteri di ricerca con caratteri jolly non sono supportati.[ @table\_owner=\] 'table_owner'
Proprietario della tabella utilizzata per restituire informazioni sul catalogo. owner è di tipo sysname e il valore predefinito è NULL. Le ricerche con caratteri jolly non sono supportate. Se non si specifica owner, vengono applicate le regole di visibilità della tabella predefinite del sistema DBMS sottostante.In SQL Server, se l'utente corrente è il proprietario di una tabella con il nome specificato, vengono restituite le colonne di tale tabella. Se owner viene omesso e l'utente corrente non è il proprietario di una tabella con il valore name specificato, viene eseguita la ricerca di una tabella name di proprietà del proprietario del database. Se la tabella esiste, vengono restituite le colonne corrispondenti.
[ @qualifier=\] 'qualifier'
Nome del qualificatore di tabella. qualifier è di tipo sysname e il valore predefinito è NULL. Vari prodotti DBMS supportano nomi in tre parti per le tabelle, ovvero 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 è di tipo char(1) e il valore predefinito è R. Il tipo R restituisce la colonna o il set di colonne ottimale che, tramite il recupero dei valori corrispondenti, consente di identificare in modo univoco ogni riga nella tabella specificata. Una colonna può essere una pseudocolonna progettata a questo scopo oppure la colonna o le colonne di un indice univoco della tabella. Il tipo V restituisce le eventuali colonne della tabella specificata che vengono aggiornate automaticamente dall'origine dati quando qualsiasi valore della riga viene aggiornato tramite una transazione.[ @scope=\] 'scope'
Ambito minimo richiesto per ROWID. scope è di tipo char(1) e il valore predefinito è T. L'ambito C indica che il valore ROWID è valido solo se posizionato in tale riga. L'ambito T indica che il valore ROWID è valido per la transazione.[ @nullable=\] 'nullable'
Indica se le colonne speciali possono accettare un valore null. nullable è di tipo char(1) e il valore predefinito è U. Il valore O specifica le colonne speciali che non ammettono valori Null, mentre Uspecifica le colonne che ammettono parzialmente valori Null.[ @ODBCVer=\] 'ODBCVer'
Versione ODBC utilizzata. ODBCVer è di tipo int(4) e il valore predefinito è 2. che indica ODBC versione 2.0. Per ulteriori informazioni sulle differenze tra ODBC versione 2.0 e ODBC versione 3.0, vedere la specifica ODBC SQLSpecialColumns per ODBC versione 3.0.
Valori di codice restituiti
Nessuno
Set di risultati
Nome della colonna |
Tipo di dati |
Descrizione |
---|---|---|
SCOPE |
smallint |
Ambito effettivo dell'ID della riga. Il Può essere 0, 1 o 2. Tramite SQL Server viene restituito sempre 0. 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 selezione successiva in base all'ID di riga potrebbe non restituire la riga se questa è 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 di ogni colonna della tabella tablerestituita. 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 dei 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 nell'origine dati per la forma binaria del tipo di dati, ad esempio 10 per char(10), 4 per integer e 2 per smallint. |
SCALE |
smallint |
Scala della colonna nell'origine dati. Per i tipi di dati in cui la scala non è applicabile viene restituito NULL. |
PSEUDO_COLUMN |
smallint |
Indica se la colonna è una pseudocolonna. SQL Server restituisce sempre 1: 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 l'autorizzazione SELECT per lo schema.
Esempi
Nell'esempio seguente vengono restituite informazioni sulla colonna che identifica in modo univoco le righe nella tabella HumanResources.Department.
USE AdventureWorks2012;
GO
EXEC sp_special_columns @table_name = 'Department'
,@table_owner = 'HumanResources';