Compartilhar via


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çãoObservaçã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

Outros recursos