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çã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).