Partilhar via


sp_special_columns (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Devolve o conjunto ótimo de colunas que identificam de forma única uma linha na tabela. Também devolve colunas atualizadas automaticamente quando qualquer valor na linha é atualizado por uma transação.

Transact-SQL convenções de sintaxe

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 ]
[ ; ]

Arguments

[ @table_name = ] N'table_name'

O nome da tabela era usado para devolver a informação do catálogo. @table_name é sysname, sem padrão. A correspondência de padrões coringa não é suportada.

[ @table_owner = ] N'table_owner'

O proprietário da mesa era usado para devolver a informação do catálogo. @table_owner é sysname, com o padrão de NULL. A correspondência de padrões coringa não é suportada. Se @table_owner não for especificado, aplicam-se as regras padrão de visibilidade de tabelas do sistema de gestão de bases de dados (SGBD) subjacente.

No SQL Server, se o utilizador atual possuir uma tabela com o nome especificado, as colunas dessa tabela são devolvidas. Se @table_owner não for especificado e o utilizador atual não possuir uma tabela do @table_name especificado, este procedimento procura uma tabela do @table_name especificado pertencente ao proprietário da base de dados. Se a tabela existir, as suas colunas são devolvidas.

[ @table_qualifier = ] N'table_qualifier'

O nome do qualificador da tabela. @table_qualifier é sysname, com um padrão de NULL. Vários produtos SGBD suportam a nomenclatura em três partes para tabelas (<qualifier>.<owner>.<name>). No SQL Server, esta coluna representa o nome da base de dados. Em alguns produtos, representa o nome do servidor do ambiente de base de dados da tabela.

[ @col_type = ] 'col_type'

O tipo de coluna. @col_type é char(1), com um padrão de R.

  • O tipo R devolve a coluna ou conjunto ótimo de colunas que, ao recuperar valores da coluna ou das colunas, permite que qualquer linha da tabela especificada seja identificada de forma única. Uma coluna pode ser uma pseudocoluna concebida para este propósito, ou a coluna ou colunas de qualquer índice único para a tabela.

  • O tipo V devolve a coluna ou colunas na tabela especificada, se existirem, que são automaticamente atualizadas pela fonte de dados quando qualquer valor na linha é atualizado por qualquer transação.

[ @scope = ] 'escopo'

O âmbito mínimo exigido do ROWID. @scope é char(1), com um padrão de T.

  • O âmbito C especifica que o ROWID é válido apenas quando posicionado nessa linha.
  • O âmbito 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 está a ser utilizada. @ODBCVer é int, com um padrão de 2. Este valor indica a versão 2.0 do ODBC. Para mais informações sobre a diferença entre a versão 2.0 e a versão 3.0 do ODBC, consulte a especificação ODBC SQLSpecialColumns para a versão 3.0 do ODBC.

Valores de código de retorno

Nenhum.

Conjunto de resultados

Nome da coluna Tipo de dados Description
SCOPE smallint Âmbito real do ID da linha. Pode ser 0, 1, ou 2. O SQL Server devolve 0sempre . Este campo devolve sempre um valor.

0 = SQL_SCOPE_CURROW. O ID da linha é garantido válido apenas enquanto estiver posicionado nessa linha. Uma reseleção posterior usando o ID da linha pode não devolver uma linha se a linha for atualizada ou eliminada por outra transação.
1 = SQL_SCOPE_TRANSACTION. O ID da linha é garantido válido durante toda a duração da transação atual.
2 = SQL_SCOPE_SESSION. O ID da linha é garantido válido durante toda a duração da sessão (através dos limites das transações).
COLUMN_NAME sysname Nome da coluna para cada coluna da @table_name devolvido. Este campo devolve sempre um valor.
DATA_TYPE smallint Tipo de dados SQL ODBC.
TYPE_NAME sysname Nome do tipo de dado dependente da fonte de dados; por exemplo, char, varchar, dinheiro ou texto.
PRECISION int Precisão da coluna na fonte de dados. Este campo devolve sempre um valor.
LENGTH int Comprimento, em bytes, necessário para o tipo de dado na 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 é devolvido 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 retorna 1sempre :

0 = SQL_PC_UNKNOWN
1 = SQL_PC_NOT_PSEUDO
2 = SQL_PC_PSEUDO

Observações

sp_special_columns é equivalente a SQLSpecialColumns em ODBC. Os resultados devolvidos estão ordenados por SCOPE.

Permissions

Requer SELECT permissão no esquema.

Examples

O exemplo seguinte devolve informação sobre a coluna que identifica de forma única as linhas da HumanResources.Department tabela.

USE AdventureWorks2022;
GO

EXECUTE sp_special_columns
    @table_name = 'Department',
    @table_owner = 'HumanResources';