Compartilhar via


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), 4para 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';