Condividi tramite


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 argomentoConvenzioni 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 del 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 le informazioni del catalogo. owner è di tipo sysname e il valore predefinito è NULL. I criteri di ricerca con caratteri jolly non sono supportati. 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 con nome corrispondente al valore name specificato e 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 altri 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. Con il tipo R viene restituita 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 appositamente per questo scopo oppure la colonna o le colonne di un indice univoco della tabella. Il tipo di colonna V restituisce le eventuali colonne della tabella specificata che vengono aggiornate automaticamente dall'origine dei dati in corrispondenza dell'aggiornamento di un valore della riga 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 mentre si è posizionati in tale riga. L'ambito T indica che il valore ROWID è valido per l'intera transazione.

  • [ @nullable =] 'nullable'
    Indica se le colonne speciali ammettono valori Null. nullable è di tipo char(1) e il valore predefinito è U. Il valore O specifica le colonne speciali che non ammettono valori Null, mentre U specifica le colonne in cui i valori Null sono parzialmente supportati.

  • [ @ODBCVer =] 'ODBCVer'
    Versione di ODBC in uso. 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 restituiti

Nessuno

Set di risultati

Nome colonna

Tipo di dati

Descrizione

SCOPE

smallint

Ambito effettivo dell'ID di riga. I possibili valori sono 0, 1 e 2. SQL Server restituisce sempre 0. In questo campo viene sempre restituito 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 di riga è garantita per l'intera durata della sessione (oltre i limiti delle transazioni).

COLUMN_NAME

sysname

Nome di ogni colonna della tabella tablerestituita. In questo campo viene sempre restituito 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 dei dati. In questo campo viene sempre restituito un valore.

LENGTH

Int

Lunghezza, in byte, richiesta nell'origine dei 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 dei 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 corrisponde 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 AdventureWorks;
GO
EXEC sp_special_columns @table_name = 'Department' 
    ,@table_owner = 'HumanResources';