Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Como regra geral, considere as implicações de usar SQLBindCol para causar conversão de dados. As conversões de ligação são processos clientes, por isso, por exemplo, recuperar um valor de ponto flutuante vinculado a uma coluna de carácter faz com que o driver realize localmente a conversão float-to-character quando uma linha é obtida. A função Transact-SQL CONVERT pode ser usada para calcular o custo da conversão de dados no servidor.
Uma instância do SQL Server pode devolver múltiplos conjuntos de linhas de resultados numa única execução de instrução. Cada conjunto de resultados deve ser encadernado separadamente. Para mais informações sobre binding para múltiplos conjuntos de resultados, consulte SQLMoreResults.
O programador pode associar colunas a tipos de dados C específicos de SQL Server usando o valor TargetType SQL_C_BINARY. Colunas associadas a tipos específicos do SQL Server não são portáteis. Os tipos de dados ODBC C específicos de SQL Server definidos correspondem às definições de tipos para a DB-Library, e DB-Library desenvolvedores que portam aplicações podem querer tirar partido desta funcionalidade.
A truncação de dados de reporte é um processo dispendioso para o driver ODBC do SQL Server Native Client. Pode evitar o truncamento garantindo que todos os buffers de dados ligados são suficientemente largos para devolver dados. Para dados de caracteres, a largura deve incluir espaço para um terminador de strings quando é usado o comportamento padrão do driver para terminação de string. Por exemplo, associar uma coluna do SQL Server Char(5) a um array de cinco caracteres resulta em truncamento para cada valor obtido. Associar a mesma coluna a um array de seis caracteres evita o truncamento ao fornecer um elemento de carácter onde armazenar o terminador nulo. O SQLGetData pode ser usado para recuperar eficientemente dados longos de caracteres e binários sem truncamento.
Para tipos de dados de grande valor, se o buffer fornecido pelo utilizador não for suficientemente grande para conter o valor total da coluna, SQL_SUCCESS_WITH_INFO é devolvido e os "dados da cadeia; é emitido o aviso de truncamento à direita". O argumento StrLen_or_IndPtr conterá o número de caracteres/bytes armazenados no buffer.
Suporte SQLBindCol para funcionalidades melhoradas de data e hora
Os valores das colunas dos resultados dos tipos data/hora são convertidos conforme descrito em Conversões de SQL para C. Note que, para recuperar as colunas de tempo e de datatimeoffset como as suas estruturas correspondentes (SQL_SS_TIME2_STRUCT e SQL_SS_TIMESTAMPOFFSET_STRUCT), o 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 SQLBindCol para grandes CLR UDTs
O SQLBindCol suporta grandes tipos CLR definidos pelo utilizador (UDTs). Para obter mais informações, consulte Large CLR User-Defined Types (ODBC).