Condividi tramite


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 0sempre . 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 1sempre :

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';