SQLPutData

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Las restricciones siguientes se aplican 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 SQL Server Native Client no admite la conexión a SQL Server versión 6.5 y anteriores.

Diagnóstico

Hay una SQL Server Native Client SQLSTATE específica 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 de la siguiente fila o fila 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 DE TVP variable en Enlace y transferencia de datos de parámetros y valores de columna de Table-Valued.

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 grandes definidos por el usuario (UDT) clR. Para obtener más información, vea Tipos de User-Defined CLR grandes (ODBC).

Consulte también

Función SQLPutData
ODBC API Implementation Details