Partilhar via


SQLPutData

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure do Azure Synapse AnalyticsAnalytics Platform System (PDW)

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

Cancelar 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. O texto , ntextou coluna de de imagem que foi referenciada quando SQLCancel foi chamado é definido 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óstico

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

SQLSTATE Erro Descrição
22026 Dados de cadeia de caracteres, incompatibilidade de comprimento 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) onde n for maior que 0, o número total de bytes fornecidos pelo aplicativo via SQLPutData deve corresponder ao comprimento especificado.

SQLPutData e parâmetros Table-Valued

SQLPutData é usado por um aplicativo ao usar a ligaçã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â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 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 a mensagem "String inválida ou comprimento do buffer".

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 vinculação de linha TVP variável em Vinculação e transferência de dados de parâmetros de 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), é um erro. Este erro faz com que SQLPutData retorne SQL_ERROR: SQLSTATE=HY090, "String inválida ou comprimento do buffer".

Para obter mais informações sobre parâmetros com valor de tabela, consulte Parâmetros Table-Valued (ODBC).

Suporte SQLPutData para recursos aprimorados de data e hora

Os valores de parâmetros 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 SQLPutData para UDTs CLR grandes

SQLPutData suporta grandes tipos CLR definidos pelo usuário (UDTs). Para obter mais informações, consulte Large CLR User-Defined Types (ODBC).

Ver também

da função SQLPutData
Detalhes da implementação da API ODBC