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