sp_special_columns (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Retorna o conjunto ideal de colunas que identificam, de forma exclusiva, uma linha na tabela. Também retorna colunas atualizadas automaticamente quando qualquer valor na linha for atualizado por uma transação.
Convenções de sintaxe de Transact-SQL
Sintaxe
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 ]
[ ; ]
Argumentos
[ @table_name = ] N'table_name'
O nome da tabela usada para retornar informações do catálogo. @table_name é sysname, sem padrão. Não há suporte para a correspondência de padrões curinga.
@table_owner [ = ] N'table_owner'
O proprietário da tabela usada para retornar informações de catálogo. @table_owner é sysname, com um padrão de NULL
. Não há suporte para a correspondência de padrões curinga. Se @table_owner não for especificado, as regras de visibilidade de tabela padrão do DBMS (sistema de gerenciamento de banco de dados) subjacente serão aplicadas.
No SQL Server, se o usuário atual possuir uma tabela com o nome especificado, as colunas dessa tabela serão retornadas. Se @table_owner não for especificado e o usuário atual não possuir uma tabela do @table_name especificado, este procedimento procurará uma tabela do @table_name especificado pertencente ao proprietário do banco de dados. Se a tabela existir, suas colunas serão retornadas.
@table_qualifier [ = ] N'table_qualifier'
O nome do qualificador de tabela. @table_qualifier é sysname, com um padrão de NULL
. Vários produtos DBMS suportam nomenclatura de três partes para tabelas (<qualifier>.<owner>.<name>
). No SQL Server, essa coluna representa o nome do banco de dados. Em alguns produtos, representa o nome do servidor do ambiente de banco de dados da tabela.
@col_type [ = ] 'col_type'
O tipo da coluna. @col_type é char(1), com um padrão de R
.
Type
R
retorna a coluna ou conjunto de colunas ideal que, ao recuperar valores da coluna ou colunas, permite que qualquer linha na tabela especificada seja identificada exclusivamente. Uma coluna pode ser uma pseudocoluna projetada para essa finalidade ou a coluna ou colunas de qualquer índice exclusivo para a tabela.Type
V
retorna a coluna ou colunas na tabela especificada, se houver, que são atualizadas automaticamente pela fonte de dados quando qualquer valor na linha é atualizado por qualquer transação.
@scope [ = ] 'escopo'
O escopo mínimo necessário do ROWID. @scope é char(1), com um padrão de T
.
- O escopo
C
especifica que o ROWID é válido somente quando posicionado nessa linha. - O escopo
T
especifica que o ROWID é válido para a transação.
@nullable [ = ] 'anulável'
Especifica se as colunas especiais podem aceitar um NULL
valor. @nullable é char(1), com um padrão de U
.
O
Especifica colunas especiais que não permitem valores nulos.U
especifica colunas que são parcialmente anuláveis.
@ODBCVer [ = ] ODBCVer
A versão ODBC que está sendo usada. @ODBCVer é int, com um padrão de 2
. Esse valor indica ODBC versão 2.0. Para obter mais informações sobre a diferença entre o ODBC versão 2.0 e o ODBC versão 3.0, consulte a especificação ODBC SQLSpecialColumns
para ODBC versão 3.0.
Valores do código de retorno
Nenhum.
Conjunto de resultados
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
SCOPE |
smallint | Escopo real da ID da linha. Pode ser 0 , 1 ou 2 . O SQL Server sempre retorna 0 . Esse campo sempre retorna um valor.0 = SQL_SCOPE_CURROW . A ID da linha tem a garantia de ser válida somente quando posicionada nessa linha. Uma nova seleção posterior usando a ID da linha pode não retornar uma linha se a linha tiver sido atualizada ou excluída por outra transação.1 = SQL_SCOPE_TRANSACTION . A ID da linha tem a garantia de ser válida durante a transação atual.2 = SQL_SCOPE_SESSION . A ID da linha tem a garantia de ser válida durante a sessão (dentro dos limites da transação). |
COLUMN_NAME |
sysname | Nome da coluna para cada coluna do @table_name retornado. Esse campo sempre retorna um valor. |
DATA_TYPE |
smallint | Tipo de dados SQL ODBC. |
TYPE_NAME |
sysname | Nome do tipo de dados dependente da fonte de dados; por exemplo, char, varchar, money ou text. |
PRECISION |
int | Precisão da coluna na fonte de dados. Esse campo sempre retorna um valor. |
LENGTH |
int | Comprimento, em bytes, necessário para o tipo de dados em sua forma binária na fonte de dados, por exemplo, 10 para char(10), 4 para inteiro e 2 para smallint. |
SCALE |
smallint | Escala da coluna na fonte de dados. NULL é retornado para tipos de dados para os quais a escala não é aplicável. |
PSEUDO_COLUMN |
smallint | Indica se a coluna é uma pseudocoluna. O SQL Server sempre retorna 1 :0 = SQL_PC_UNKNOWN 1 = SQL_PC_NOT_PSEUDO 2 = SQL_PC_PSEUDO |
Comentários
sp_special_columns
é equivalente a SQLSpecialColumns
em ODBC. Os resultados retornados são ordenados por SCOPE
.
Permissões
Requer a permissão SELECT
no esquema.
Exemplos
O exemplo a seguir retorna informações sobre a coluna que identifica linhas de forma exclusiva na tabela HumanResources.Department
.
USE AdventureWorks2022;
GO
EXEC sp_special_columns @table_name = 'Department',
@table_owner = 'HumanResources';