SQLPutData
As seguintes restrições se aplicam ao usar SQLPutData para enviar mais de 65.535 bytes de dados (para o SQL Server versão 4.21a) ou 400 KB de dados (para o SQL Server versão 6.0 e posteriores) para uma coluna SQL_LONGVARCHAR (text), SQL_WLONGVARCHAR (ntext) ou SQL_LONGVARBINARY (image):
O parâmetro referenciado pode ser o insert_value em uma instrução INSERT.
O parâmetro referenciado pode ser um expression na cláusula SET de uma instrução UPDATE.
Cancelar uma sequência de chamadas a SQLPutData que fornecem dados em blocos para um servidor que está executando o SQL Server causa uma atualização parcial do valor da coluna quando a versão 6.5 ou anterior é usada. A coluna text, ntext ou image que foi referenciada quando SQLCancel foi chamado é definida com um valor de espaço reservado intermediário.
Observação |
---|
O driver ODBC do SQL Server Native Client não dá suporte à conexão ao SQL Server versão 6.5 e anteriores. |
Diagnóstico
Há um SQLSTATE específico ao SQL Server Native Client para SQLPutData:
SQLSTATE |
Erro |
Descrição |
---|---|---|
22026 |
Incompatibilidade de comprimento de dados String |
Se o comprimento de dados em bytes a ser enviado tiver sido especificado por um aplicativo, por exemplo, com o SQL_LEN_DATA_AT_EXEC (n) onde n é maior que 0, o número total de bytes fornecido pelo aplicativo via SQLPutData deverá corresponder ao comprimento especificado. |
SQLPutData e parâmetros com valor de tabela
SQLPutData é usado por um aplicativo quando é usada a associação de linha variável a parâmetros com valor de tabela. O parâmetro StrLen_Or_Ind indica que o driver está pronto para coletar dados para a próxima linha ou linhas de dados de parâmetros com valor de tabela, ou que não há mais linhas disponíveis:
Um valor maior que 0 indica que o próximo conjunto de valores de linha está disponível.
Um valor igual a 0 indica que não há mais linhas a serem enviadas.
Qualquer valor menor que 0 indica um erro e resulta na geração de um registro de diagnóstico com SQLState igual a HY090 e na mensagem "Comprimento de buffer ou de cadeia de caracteres inválido".
O parâmetro DataPtr é ignorado, mas deve ser definido como um valor diferente de NULL. Para obter mais informações, consulte a seção sobre a associação de linhas de variáveis TVP em Associação e transferência de dados de parâmetros com valor de tabela e valores de coluna.
Se StrLen_Or_Ind tiver qualquer valor diferente de SQL_DEFAULT_PARAM ou de um número entre 0 e SQL_PARAMSET_SIZE (ou seja, o parâmetro ColumnSize de SQLBindParameter), isso indica um erro. Esse erro faz SQLPutData retornar SQL_ERROR: SQLSTATE=HY090, "Comprimento de buffer ou de cadeia de caracteres inválido".
Para obter mais informações sobre parâmetros com valor de tabela, consulte Parâmetros com valor de tabela (ODBC).
Suporte de SQLPutData a recursos aprimorados de data e hora
Valores de parâmetros dos tipos de data/hora são convertidos conforme descrito em Conversões do C para o SQL.
Para obter mais informações, consulte Aprimoramentos de data/hora (ODBC).
Suporte de SQLPutData a UDTs grandes do CLR
SQLPutData dá suporte a UDTs (tipos definidos pelo usuário) grandes do CLR. 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