Partilhar via


SQLBindCol

Como regra geral, considere as implicações de usar SQLBindCol para causar conversão de dados. As conversões de associações são processos do cliente, portanto, por exemplo, recuperar um valor de ponto flutuante associado a uma coluna de caracteres faz com que o driver execute a conversão flutuante para caractere localmente quando uma linha é buscada. A função CONVERT do Transact-SQL pode ser usada para inserir o custo da conversão de dados no servidor.

Uma instância do SQL Server pode retornar vários conjuntos de linhas de resultado em uma única execução de instrução. Cada conjunto de resultados deve ser associado separadamente. Para obter mais informações sobre como associar vários conjuntos de resultados, consulte SQLMoreResults.

O desenvolvedor pode associar colunas a tipos de dados C específicos do SQL Server usando o valor TargetTypeSQL_C_BINARY. Colunas associadas a tipos específicos do SQL Server não são portáteis. Os tipos de dados C de ODBC definidos e específicos do SQL Server correspondem às definições de tipo para DB-Library e os desenvolvedores de DB-Library portando aplicativos podem desejar tirar proveito desse recurso.

Informar o truncamento de dados é um processo caro para o driver ODBC do SQL Server Native Client. Você pode evitar o truncamento assegurando que todos os buffers de dados associados tenham largura suficiente para retornar dados. Para dados de caracteres, a largura deve incluir espaço para um terminador da cadeia de caracteres quando o comportamento padrão do driver para a terminação da cadeia de caracteres for usado. Por exemplo, a associação de uma coluna SQL Server char(5) a uma matriz de cinco caracteres resulta em truncagem para todos os valores buscados. A associação da mesma coluna a uma matriz de seis caracteres evita a truncagem, fornecendo um elemento de caractere no qual armazenar o terminador nulo. SQLGetData pode ser usado para recuperar com eficiência dados de caracteres longos e dados binários sem truncagem.

Para tipos de dados com valor grande, se o buffer fornecido do usuário não for grande o suficiente para reter todo o valor da coluna, SQL_SUCCESS_WITH_INFO será retornado e o aviso do tipo “dados da cadeia de caracteres; truncagem à direita” será emitido. O argumento StrLen_or_IndPtr conterá o número de chars/bytes armazenados no buffer.

Suporte de SQLBindCol a recursos aprimorados de data e hora

Valores da coluna de resultados dos tipos de data/hora são convertidos conforme descrito em Conversões de SQL em C. Observe que para recuperar colunas hora e datetimeoffset como suas estruturas correspondentes (SQL_SS_TIME2_STRUCT e SQL_SS_TIMESTAMPOFFSET_STRUCT), TargetType deve ser especificado como SQL_C_DEFAULT ou SQL_C_BINARY.

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

Suporte de SQLBindCol para CLR UDTs grandes

SQLBindCol dá suporte a tipos de dados CLR definidos pelo usuário. Para obter mais informações, consulte Tipos de dados CLR grandes definidos pelo usuário (ODBC).

Consulte também

Conceitos

Detalhes de implementação da API ODBC

Outros recursos

Função SQLBindCol