SQLPutData
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 (), SQL_WLONGVARCHAR (text
ntext
) o SQL_LONGVARBINARY (image
):
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.
Al cancelar una secuencia de 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 cuando se usa la versión 6.5 o anterior. La text
columna , 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 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 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 cuando se usa 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 filas DE TVP variable en Enlace y transferencia de datos de Table-Valued parámetros 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 produce 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 CLR definidos por el usuario (UDT) grandes. Para obtener más información, vea Large CLR User-Defined Types (ODBC).