Compartilhar via


SQLPutData

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics

As seguintes restrições 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.

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

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

Confira também

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