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.

Icona di collegamento a un argomento 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';

Vedere anche

Riferimento

Stored procedure di catalogo (Transact-SQL)

Stored procedure di sistema (Transact-SQL)