Compartir a través de


SQLPutData

Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)

Se aplican las restricciones siguientes al usar SQLPutData para enviar más de 65 535 bytes de datos (para SQL Server versión 4.21a) o 400 KB de datos (para SQL Server versión 6.0 y posteriores) para una columna de SQL_LONGVARCHAR (texto), SQL_WLONGVARCHAR (ntext) o SQL_LONGVARBINARY (imagen):

  • El parámetro al que se hace referencia puede ser el insert_value en una instrucción INSERT.

  • El parámetro al que se hace referencia puede ser una expresión en la cláusula SET de una instrucción UPDATE.

La cancelación de una secuencia de llamadas SQLPutData que proporcionan datos en bloques a un servidor que ejecuta SQL Server provoca una actualización parcial del valor de la columna cuando se usa la versión 6.5 o anterior. La columna text, ntext o image a la que se hizo referencia cuando se llamó a SQLCancel se establece en un valor de marcador de posición intermedio.

Nota:

El controlador ODBC de SQL Server Native Client no admite la conexión a SQL Server versión 6.5 y anteriores.

Diagnóstico

Hay un SQLSTATE específico de SQL Server Native Client para SQLPutData:

SQLSTATE Error Descripción
22026 Datos de cadena, desigualdad de longitud Si una aplicación ha especificado la longitud de los datos en bytes, por ejemplo, con SQL_LEN_DATA_AT_EXEC(n), donde n es mayor que 0, el número total de bytes proporcionados por la aplicación a través de SQLPutData debe coincidir con la longitud especificada.

SQLPutData y parámetros con valores de tabla

SQLPutData lo usa una aplicación al usar el enlace de fila variable con parámetros con valores de tabla. El parámetro StrLen_Or_Ind indica que está listo para que el controlador recopile datos para la siguiente fila o filas de datos de parámetros con valores de tabla o que no haya más filas disponibles:

  • Un valor mayor que 0 indica que el conjunto siguiente de valores de fila está disponible.

  • Un valor de 0 indica que no hay ninguna fila más para enviar.

  • Cualquier valor menor que 0 es un error tiene como resultado un registro de diagnóstico que se registra con con SQLState HY090 y el mensaje "Longitud de búfer o cadena no válida".

El parámetro DataPtr se omite, pero debe establecerse en un valor distinto de NULL. Para obtener más información, vea la sección sobre el enlace de fila TVP variable en Enlace y transferencia de datos de parámetros con valores de tabla y valores de columna.

Si StrLen_Or_Ind tiene cualquier valor distinto de SQL_DEFAULT_PARAM o un número entre 0 y el SQL_PARAMSET_SIZE (es decir, el parámetro ColumnSize de SQLBindParameter), se trata de un error. Este error hace que SQLPutData devuelva SQL_ERROR: SQLSTATE=HY090, "Longitud de búfer o cadena no válida".

Para obtener más información sobre los parámetros con valores de tabla, vea Parámetros con valores de tabla (ODBC).

Compatibilidad de SQLPutData con las características mejoradas de fecha y hora

Los valores de parámetro de los tipos de fecha y hora se convierten como se describe en Conversiones de C a SQL.

Para obtener más información, vea Mejoras de fecha y hora (ODBC).

Compatibilidad de SQLPutData con los UDT CLR grandes

SQLPutData admite tipos definidos por el usuario (UDT) clR grandes. Para obtener más información, vea Tipos definidos por el usuario (ODBC) clR grandes.

Consulte también

Función SQLPutData
Detalles de implementación de la API de ODBC