No SQL Server, o
COLUMNPROPERTY()
função retorna informações de coluna ou parâmetro. Por exemplo, você pode usá-lo para retornar informações sobre uma coluna em uma tabela, um parâmetro para um procedimento armazenado, etc.
Ele aceita três argumentos:o ID da tabela ou procedimento, a coluna ou parâmetro aplicável e a propriedade sobre a qual você deseja obter informações.
Sintaxe
A sintaxe fica assim:
COLUMNPROPERTY ( id , column , property )
Exemplo 1 – Consultar uma tabela
Neste exemplo, recebo informações sobre uma coluna dentro de uma tabela.
USE Music; SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Resultado:
+----------+ | Result | |----------| | 0 | +----------+
Nesse caso, a coluna ArtistId não permite valores NULL.
Vamos mudar para uma coluna diferente:
SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Scale') AS [Scale];
Resultado:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Nesse caso, a coluna ActiveFrom permite valores NULL. Ele também tem uma precisão de 10 e uma escala de 0.
Você notará que eu uso o
OBJECT_ID()
função para retornar o ID da tabela. Sem essa função, eu precisaria saber o ID (ou precisaria fazer outra consulta apenas para obter o ID). Veja o que
OBJECT_ID()
retorna no exemplo acima:SELECT OBJECT_ID('Artists') AS Result;
Resultado:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Agora que sabemos o ID, podemos passá-lo para o
COLUMNPROPERTY()
função em vez disso:SELECT COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
Resultado:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Exemplo 2 – Consultar um procedimento
Neste exemplo, recebo informações sobre um parâmetro de um procedimento armazenado.
USE Music; SELECT COLUMNPROPERTY( OBJECT_ID('dbo.uspGetAlbumsByArtist'), '@ArtistId', 'IsOutParam') AS [Result];
Resultado:
+----------+ | Result | |----------| | 0 | +----------+
Então é exatamente a mesma sintaxe. Neste caso, o parâmetro
@ArtistId
não é um parâmetro de saída. Lista completa de opções
Aqui está uma lista completa de argumentos que você pode passar para
COLUMNPROPERTY()
no momento da escrita:- PermiteNulo
- ColunaId
- FullTextTypeColumn
- GeneratedAlwaysType
- IsColumnSet
- É computado
- IsCursorType
- ÉDeterminístico
- IsFulltextIndexed
- Está oculto
- IsIdentity
- IsIdNotForRepl
- É indexável
- IsOutParam
- É preciso
- IsRowGuidCol
- ÉSparse
- IsSystemVerified
- IsXmlIndexável
- Precisão
- Escala
- Semântica Estatística
- SystemDataAccess
- UserDataAccess
- UsaAnsiTrim
Consulte a documentação da Microsoft para obter uma explicação detalhada de cada propriedade.
Veja também
OBJECTPROPERTYEX()
para uma função semelhante que retorna informações sobre objetos com escopo de esquema em vez de bancos de dados e DATABASEPROPERTYEX()
que retorna informações de propriedade para bancos de dados.