SQLPutData

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 posterior) para una columan SQL_LONGVARCHAR (text), SQL_WLONGVARCHAR (ntext) o SQL_LONGVARBINARY (image):

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

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

Al cancelar una secuencia de las llamadas SQLPutData que proporcionan datos en bloques a un servidor que ejecuta SQL Server, se produce una actualización parcial del valor de la columna al usar la versión 6.5 o anterior. La columna text, ntext o image a las 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 permite la conexión con SQL Server versión 6.5 y anteriores.

Diagnósticos

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 datos en bytes que se va a enviar, por ejemplo con SQL_LEN_DATA_AT_EXEC (n) donde n es mayor que 0, el número total de bytes proporcionado por la aplicación a través de SQLPutData debe coincidir con la longitud especificada.

SQLPutData y parámetros con valores de tabla

Una aplicación usa SQLPutData al emplear un enlace de filas 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 las siguiente filas de datos de parámetros con valores de tabla, o que ninguna fila más está disponible:

  • 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 una valor que no sea NULL. Para obtener más información, vea la sección sobre el enlace de filas variable de parámetros con valores de tabla en Enlace y transferencia de datos de valores de columnas y parámetros con valores de tabla.

Si StrLen_Or_Ind tiene cualquier valor distinto de SQL_DEFAULT_PARAM o un número comprendido entre 0 y el parámetro SQL_PARAMSET_SIZE (es decir, el parámetro ColumnSize de SQLBindParameter), es 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 acerca de 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 tipos de fecha y hora se convierten como se describe en Conversiones de C a SQL.

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

Compatibilidad de SQLPutData con los UDT CLR grandes

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