Compartilhar via


SQLColAttribute

Você pode usar SQLColAttribute para recuperar um atributo de uma coluna de conjunto de resultados para instruções ODBC preparadas ou executadas. Chamar SQLColAttribute instruções preparadas causa uma viagem de ida e volta para o SQL Server. O driver ODBC do SQL Server Native Client recebe dados de coluna do conjunto de resultados como parte da execução da instrução, portanto, chamar SQLColAttribute após a conclusão de SQLExecute ou SQLExecDirect não envolve uma ida e volta do servidor.

Observação

Os atributos do identificador de coluna ODBC não estão disponíveis em todos os conjuntos de resultados do SQL Server.

Identificador de campo Descrição
SQL_COLUMN_TABLE_NAME Disponível em conjuntos de resultados recuperados de instruções que geram cursores de servidor ou em instruções SELECT executadas que contêm uma cláusula FOR BROWSE.
SQL_DESC_BASE_COLUMN_NAME Disponível em conjuntos de resultados recuperados de instruções que geram cursores de servidor ou em instruções SELECT executadas que contêm uma cláusula FOR BROWSE.
SQL_DESC_BASE_TABLE_NAME Disponível em conjuntos de resultados recuperados de instruções que geram cursores de servidor ou em instruções SELECT executadas que contêm uma cláusula FOR BROWSE.
SQL_DESC_CATALOG_NAME nome do banco de dados. Disponível em conjuntos de resultados recuperados de instruções que geram cursores de servidor ou em instruções SELECT executadas que contêm uma cláusula FOR BROWSE.
SQL_DESC_LABEL Disponível em todos os conjuntos de resultados. O valor é idêntico ao valor do campo SQL_DESC_NAME.

O campo terá comprimento zero somente se uma coluna for o resultado de uma expressão e a expressão não contiver uma atribuição de rótulo.
SQL_DESC_NAME Disponível em todos os conjuntos de resultados. O valor é idêntico ao valor do campo SQL_DESC_LABEL.

O campo terá comprimento zero somente se uma coluna for o resultado de uma expressão e a expressão não contiver uma atribuição de rótulo.
SQL_DESC_SCHEMA_NAME Nome do proprietário. Disponível em conjuntos de resultados recuperados de instruções que geram cursores de servidor ou em instruções SELECT executadas que contêm uma cláusula FOR BROWSE.

Disponível somente se o nome do proprietário for especificado para a coluna na instrução SELECT.
SQL_DESC_TABLE_NAME Disponível em conjuntos de resultados recuperados de instruções que geram cursores de servidor ou em instruções SELECT executadas que contêm uma cláusula FOR BROWSE.
SQL_DESC_UNNAMED SQL_NAMED para todas as colunas em um conjunto de resultados, a menos que uma coluna seja o resultado de uma expressão que não contenha uma atribuição de rótulo como parte da expressão. Quando SQL_DESC_UNNAMED retorna SQL_UNNAMED, todos os atributos do identificador de coluna ODBC contêm cadeias de caracteres de comprimento zero para a coluna.

O driver ODBC do SQL Server Native Client usa a instrução SET FMTONLY para reduzir a sobrecarga do servidor quando SQLColAttribute é chamado para instruções preparadas, mas não cortadas.

Para tipos de valor grandes, SQLColAttribute retornará os seguintes valores:

Identificador de campo Descrição da alteração
SQL_DESC_DISPLAY_SIZE Esse é o número máximo de caracteres necessários para exibir dados da coluna. Para colunas de tipo de valor grande, o valor retornado é SQL_SS_LENGTH_UNLIMITED.
SQL_DESC_LENGTH Retorna o comprimento real da coluna no conjunto de resultados. Para colunas de tipo de valor grande, o valor retornado é SQL_SS_LENGTH_UNLIMITED.
SQL_DESC_OCTET_LENGTH Retorna o comprimento máximo de uma coluna de tipo de valor grande. SQL_SS_LENGTH_UNLIMITED é usado para indicar o tamanho ilimitado.
SQL_DESC_PRECISION Retorna o valor SQL_SS_LENGTH_UNLIMITED para colunas de tipo de valor grande.
SQL_DESC_TYPE Retorna SQL_VARCHAR, SQL_WVARCHAR e SQL_VARBINARY para tipos de valor grandes.
SQL_DESC_TYPE_NAME Retorna "varchar", "varbinary", "nvarchar" para os tipos de valor grandes.

Para todas as versões, os atributos de coluna são relatados apenas para o primeiro conjunto de resultados quando vários conjuntos de resultados são gerados por um lote preparado de instruções SQL.

Os atributos de coluna a seguir são extensões expostas pelo driver ODBC do SQL Server Native Client. O driver ODBC do SQL Server Native Client retorna todos os valores no parâmetro NumericAttrPtr . Os valores são retornados como SDWORD (com sinal longo), exceto SQL_CA_SS_COMPUTE_BYLIST, que é um ponteiro para uma matriz WORD.

Identificador de campo Valor retornado
SQL_CA_SS_COLUMN_HIDDEN* TRUE se a coluna referenciada fizer parte de uma chave primária oculta criada para dar suporte a uma instrução SELECT Transact-SQL que contém FOR BROWSE.
SQL_CA_SS_COLUMN_ID Posição ordinal de uma coluna de resultado da cláusula COMPUTE dentro da instrução SELECT Transact-SQL atual.
SQL_CA_SS_COLUMN_KEY* TRUE se a coluna referenciada fizer parte de uma chave primária para a linha e a instrução Transact-SQL SELECT contiver FOR BROWSE.
SQL_CA_SS_COLUMN_OP Inteiro que especifica o operador de agregação responsável pelo valor em uma coluna de cláusula COMPUTE. As definições dos valores inteiros estão em sqlncli.h.
SQL_CA_SS_COLUMN_ORDER Posição ordinal da coluna dentro de uma cláusula ORDER BY da instrução ODBC ou Transact-SQL SELECT.
SQL_CA_SS_COLUMN_SIZE Comprimento máximo, em bytes, necessário para associar um valor de dados recuperado da coluna a uma variável SQL_C_BINARY.
SQL_CA_SS_COLUMN_SSTYPE Tipo de dados nativos armazenados na coluna do SQL Server. As definições dos valores de tipo estão em sqlncli.h.
SQL_CA_SS_COLUMN_UTYPE Tipo de dados base do tipo de dados definido pelo usuário da coluna do SQL Server. As definições dos valores de tipo estão em sqlncli.h.
SQL_CA_SS_COLUMN_VARYLEN TRUE se os dados da coluna puderem variar de comprimento, FALSE caso contrário.
SQL_CA_SS_COMPUTE_BYLIST Ponteiro para uma matriz de WORD (sem sinal curto) especificando as colunas usadas na frase BY de uma cláusula COMPUTE. Se a cláusula COMPUTE não especificar uma frase BY, um ponteiro NULL será retornado.

O primeiro elemento da matriz contém a contagem de colunas de lista BY. Elementos adicionais são ordinais de coluna.
SQL_CA_SS_COMPUTE_ID computeid de uma linha que é o resultado de uma cláusula COMPUTE na instrução SELECT Transact-SQL atual.
SQL_CA_SS_NUM_COMPUTES Número de cláusulas COMPUTE especificadas na instrução SELECT Transact-SQL atual.
SQL_CA_SS_NUM_ORDERS Número de colunas especificadas em uma cláusula ORDER BY da instrução ODBC ou Transact-SQL SELECT.

* Disponível se o atributo de instrução SQL_SOPT_SS_HIDDEN_COLUMNS estiver definido como SQL_HC_ON.

O SQL Server 2005 introduziu campos de descritor específicos do driver para fornecer informações adicionais para indicar o nome da coleção de esquemaS XML, o nome do esquema e o nome do catálogo, respectivamente. Essas propriedades não exigem aspas ou um caractere de escape se contiverem caracteres não alfanuméricos. A tabela a seguir lista estes novos campos de descritor:

Nome da coluna Tipo Descrição
SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME CharacterAttributePtr O nome do catálogo em que um nome de coleção de esquema XML é definido. Se não for possível localizar o nome do catálogo, essa variável conterá uma cadeia de caracteres vazia.

Essas informações são retornadas do campo de registro SQL_DESC_SS_XML_SCHEMACOLLECTION_CATALOG_NAME do IRD, que é um campo de leitura/gravação.
SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAM E CharacterAttributePtr O nome do esquema em que um nome de coleção de esquema XML é definido. Se não for possível localizar o nome do esquema, essa variável conterá uma cadeia de caracteres vazia.

Essas informações são retornadas do campo de registro SQL_DESC_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME do IRD, que é um campo de leitura/gravação.
SQL_CA_SS_XML_SCHEMACOLLECTION_NAME CharacterAttributePtr O nome de uma coleção de esquemas XML. Se não for possível localizar o nome, essa variável conterá uma cadeia de caracteres vazia.

Essas informações são retornadas do campo de registro SQL_DESC_SS_XML_SCHEMACOLLECTION_NAME do IRD, que é um campo de leitura/gravação.

Além disso, o SQL Server 2005 introduziu novos campos de descritor específicos do driver para fornecer informações adicionais para uma coluna UDT (tipo definido pelo usuário) de um conjunto de resultados ou um parâmetro UDT de um procedimento armazenado ou consulta parametrizada. Essas propriedades não exigem aspas ou um caractere de escape se contiverem caracteres não alfanuméricos. A tabela a seguir lista estes novos campos de descritor:

Nome da Coluna Tipo Descrição
SQL_CA_SS_UDT_CATALOG_NAME CharacterAttributePtr O nome do catálogo que contém a UDT.
SQL_CA_SS_UDT_SCHEMA_NAME CharacterAttributePtr O nome do esquema que contém o UDT.
SQL_CA_SS_UDT_TYPE_NAME CharacterAttributePtr O nome da UDT.
SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME CharacterAttributePtr O nome qualificado do assembly da UDT.

O identificador de campo do descritor existente SQL_DESC_TYPE_NAME é usado para indicar o nome da UDT. O campo SQL_DESC_TYPE para uma coluna de tipo UDT é SQL_SS_UDT.

Suporte a SQLColAttribute para recursos avançados de data e hora

Para obter os valores retornados para tipos de data/hora, consulte a seção "Informações Retornadas em Campos IRD" em Metadados de Parâmetro e Resultado.

Para obter mais informações, consulte Melhorias de data e hora (ODBC).

Suporte a SQLColAttribute para UDTs CLR grandes

SQLColAttribute dá suporte a UDTs (tipos definidos pelo usuário) CLR grandes. Para obter mais informações, consulte ODBC (Tipos Definidos pelo Usuário) CLR Grandes.

Suporte a SQLColAttribute para colunas esparsas

SQLColAttribute consulta o novo campo IRD (descritor de linha de implementação), SQL_CA_SS_IS_COLUMN_SET, para determinar se uma coluna é uma column_set coluna.

Para obter mais informações, consulte Suporte a Colunas Esparsas (ODBC).

Consulte Também

Função SQLColAttribute
Detalhes da implementação da API do ODBC
SQLSetStmtAttr