Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O aplicativo passa o comprimento de byte do buffer de dados para o driver em um argumento chamado BufferLength ou um nome semelhante. Por exemplo, na chamada a seguir para SQLBindCol, o aplicativo especifica o comprimento do buffer ValuePtr (sizeof(ValuePtr)):
SQLCHAR ValuePtr[50];
SQLINTEGER ValueLenOrInd;
SQLBindCol(hstmt, 1, SQL_C_CHAR, ValuePtr, sizeof(ValuePtr), &ValueLenOrInd);
Um driver sempre retornará o número de bytes, não o número de caracteres, no argumento de comprimento do buffer de qualquer função que tenha um argumento de cadeia de caracteres de saída.
Os comprimentos do buffer de dados são necessários apenas para buffers de saída; o driver os usa para evitar gravar após o final do buffer. No entanto, o driver verifica o comprimento do buffer de dados somente quando o buffer contém dados de comprimento variável, como dados binários ou caracteres. Se o buffer contiver dados de comprimento fixo, como um inteiro ou uma estrutura de data, o driver ignorará o comprimento do buffer de dados e assumirá que o buffer é grande o suficiente para manter os dados; ou seja, ele nunca trunca dados de comprimento fixo. Portanto, é importante que o aplicativo aloque um buffer grande o suficiente para dados de comprimento fixo.
Quando ocorre um truncamento de cadeias de caracteres de saída que não são de dados (como o nome do cursor retornado para SQLGetCursorName), o comprimento retornado no argumento de comprimento do buffer é o comprimento máximo de caractere possível.
Os comprimentos do buffer de dados não são necessários para buffers de entrada, pois o driver não os preenche.
Esta seção contém os seguintes tópicos.