Compartilhar via


SQLPutData

As restrições a seguir se aplicam ao usar SQLPutData para enviar mais de 65.535 bytes de dados (para SQL Server versão 4.21a) ou 400 KB de dados (para SQL Server versão 6.0 e posterior) 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 uma expressão na cláusula SET de uma instrução UPDATE.

O cancelamento de uma sequência de chamadas SQLPutData que fornecem dados em blocos para um servidor que executa o SQL Server causa uma atualização parcial do valor da coluna ao usar a versão 6.5 ou anterior. A textcoluna , ntextou image que foi referenciada quando SQLCancel foi chamado é definida como um valor de espaço reservado intermediário.

Observação

O driver ODBC do SQL Server Native Client não oferece suporte à conexão com o SQL Server versão 6.5 e anterior.

Diagnósticos

Há um SQLSTATE específico do SQL Server Native Client para SQLPutData:

SQLSTATE Erro Descrição
22026 Incompatibilidade de comprimento de dados String Se o comprimento dos dados em bytes a serem enviados tiver sido especificado por um aplicativo, por exemplo, com SQL_LEN_DATA_AT_EXEC(n) em que 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 ao usar a associação de linha variável com parâmetros com valor de tabela. O parâmetro StrLen_Or_Ind indica que ele está pronto para o driver coletar dados para a próxima linha ou linhas de dados de parâmetro 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 é um erro e resulta em um registro de diagnóstico sendo registrado com SQLState HY090 e o messaage "Comprimento de buffer ou cadeia de caracteres inválida".

O parâmetro DataPtr é ignorado, mas deve ser definido como um valor não NULL. Para obter mais informações, consulte a seção sobre Associação de linha TVP variável 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 um número entre 0 e o SQL_PARAMSET_SIZE (ou seja, o parâmetro ColumnSize de SQLBindParameter), será 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 ODBC (Parâmetros com valor de tabela).

Suporte de SQLPutData a recursos aprimorados de data e hora

Os valores de parâmetro dos tipos de data/hora são convertidos conforme descrito em Conversões de C para SQL.

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

Suporte de SQLPutData a UDTs grandes do CLR

SQLPutData dá suporte a UDTs (tipos definidos pelo usuário) CLR grandes. Para obter mais informações, consulte ODBC (Tipos Definidos pelo Usuário) CLR Grandes.

Consulte Também

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