Compartilhar via


SQLBindCol

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics

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 colocar 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 TargetType SQL_C_BINARY. As colunas associadas a tipos específicos do SQL Server não são portáteis. Os tipos de dados C ODBC específicos do SQL Server definidos correspondem às definições de tipo para DB-Library, e os desenvolvedores de DB-Library que portam aplicativos podem querer aproveitar esse recurso.

O truncamento de dados de relatório é 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, associar uma coluna char(5) do SQL Server a uma matriz de cinco caracteres resulta em truncamento para cada valor buscado. 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 de valor grande, se o buffer fornecido pelo usuário não for grande o suficiente para conter todo o valor da coluna, SQL_SUCCESS_WITH_INFO será retornado e os "dados de cadeia de caracteres; truncamento à direita" é 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

Os valores da coluna de resultado dos tipos de data/hora são convertidos conforme descrito em Conversões de SQL para C. Observe que, para recuperar colunas time 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 Melhorias de data e 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 ODBC (Tipos Definidos pelo Usuário) CLR Grandes.

Confira também

Função SQLBindCol
Detalhes da implementação da API do ODBC