Partilhar via


SQLPutData

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

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 (texto), SQL_WLONGVARCHAR (ntext) ou SQL_LONGVARBINARY (imagem):

  • 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.

Cancelar uma sequência de chamadas SQLPutData que fornecem dados em blocos para um servidor que executa SQL Server causa uma atualização parcial do valor da coluna ao usar a versão 6.5 ou anterior. A coluna text, ntext ou 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 dá suporte à conexão com SQL Server versão 6.5 e anterior.

Diagnósticos

Há um SQL Server Native Client SQLSTATE específico 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 for maior que 0, o número total de bytes fornecidos pelo aplicativo por meio de 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 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 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 Table-Valued 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 Parâmetros com valor de tabela (ODBC).

Suporte de SQLPutData a recursos aprimorados de data e hora

Os valores de parâmetro de 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 Tipos de User-Defined CLR grandes (ODBC).

Consulte Também

Função SQLPutData
ODBC API Implementation Details