sp_special_columns (Transact-SQL)

Retorna o melhor conjunto de colunas que identificam, de forma exclusiva, uma linha na tabela. Também retorna colunas automaticamente atualizadas quando qualquer valor na linha for atualizado por uma transação.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sp_special_columns [@table_name =] 'table_name'   
     [,[@table_owner =] 'table_owner'] 
     [,[@qualifier =] 'qualifier'] 
     [,[@col_type =] 'col_type'] 
     [,[@scope =] 'scope']
     [,[@nullable =] 'nullable'] 
     [,[@ODBCVer =] 'ODBCVer'] ;

Argumentos

  • [ @table_name =] 'table_name'
    É o nome da tabela usada para retornar informações de catálogo. name é sysname, sem padrão. Não há suporte para a correspondência de padrão curinga.

  • [ @table_owner =] 'table_owner'
    É o proprietário da tabela usada para retornar informações de catálogo. owner é sysname, com um padrão NULL. Não há suporte para a correspondência de padrão curinga. Se owner não for especificado, serão aplicadas as regras de visibilidade de tabela padrão do DBMS subjacente.

    No SQL Server, se o usuário atual possuir uma tabela com o nome especificado, as colunas dessa tabela serão retornadas. Se owner não estiver especificado e o usuário atual não possuir uma tabela com name especificado, este procedimento procurará uma tabela com name especificado, pertencente ao proprietário do banco de dados. Se a tabela existir, suas colunas serão retornadas.

  • [ @qualifier =] 'qualifier'
    É o nome do qualificador de tabela. qualifier é sysname, com um padrão NULL. Vários produtos de DBMS dão suporte à nomeação de três partes de tabelas (qualifier.owner.name). No SQL Server, esta 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 R. O tipo R retorna a melhor coluna ou conjunto de colunas que, pela recuperação de valores da coluna ou colunas, permite que qualquer linha da tabela especificada seja identificada de forma exclusiva. A coluna pode ser uma pseudocoluna especificamente projetada para esta finalidade ou a coluna ou colunas de qualquer índice exclusivo da tabela. O tipo V retorna a coluna ou as colunas da tabela especificada, se houver, que são automaticamente atualizadas pela fonte de dados quando qualquer valor na linha for atualizado por qualquer transação.

  • [ @scope =] 'scope'
    É o escopo mínimo necessário de ROWID. scope é char(1), com um padrão T. O escopo C especifica que ROWID é válido somente quando posicionado nessa linha. O escopo T especifica que ROWID é válido para a transação.

  • [ @nullable =] 'nullable'
    Indica se as colunas especiais podem aceitar um valor nulo. nullable é char(1), com um padrão U. O especifica colunas especiais que não permitem valores nulos. U especifica colunas que permitem valor nulo parcialmente.

  • [ @ODBCVer =] 'ODBCVer'
    É a versão de ODBC que está sendo utilizada. ODBCVer é int(4), com um padrão 2. Isto indica ODBC versão 2.0. Para obter mais informações sobre a diferença entre ODBC versão 2.0 e ODBC versão 3.0, consulte a especificação SQLSpecialColumns para ODBC versão 3.0.

Valores de código de retorno

Nenhum

Conjuntos de resultados

Nome da coluna

Tipo de dados

Descrição

SCOPE

smallint

Escopo real da ID da linha. Pode ser 0, 1 ou 2. SQL Server sempre retorna 0. Este 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 que utilize a ID da linha poderá não retornar uma linha se a linha foi 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 (além dos limites da transação).

COLUMN_NAME

sysname

Nome de cada coluna da tableretornada. Este 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. Este campo sempre retorna um valor.

LENGTH

Int

Comprimento, em bytes, necessário para o tipo de dados em seu formato binário na fonte de dados; por exemplo, 10 para char(10), 4 para integer e 2 para smallint.

SCALE

smallint

Escala da coluna na fonte de dados. NULL é retornado para os tipos de dados para os quais a escala não é aplicável.

PSEUDO_COLUMN

smallint

Indica se a coluna é um pseudocoluna. 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 AdventureWorks;
GO
EXEC sp_special_columns @table_name = 'Department' 
    ,@table_owner = 'HumanResources';