Compartir a través de


SQLSetDescField y SQLSetDescRec (biblioteca de cursores)

Importante

Esta característica se quitará en una versión futura de Windows. Evite usar esta característica en el nuevo trabajo de desarrollo y planee modificar las aplicaciones que actualmente usan esta característica. Microsoft recomienda usar la funcionalidad del cursor del controlador.

En este tema se describe el uso de las funciones SQLSetDescField y SQLSetDescRec en la biblioteca de cursores. Para obtener información general sobre estas funciones, vea Función SQLSetDescField y Función SQLSetDescRec.

La biblioteca de cursores ejecuta SQLSetDescField cuando se llama para devolver el valor de los campos establecidos para las columnas de marcador:

SQL_DESC_DATA_PTR

SQL_DESC_INDICATOR_PTR

SQL_DESC_OCTET_LENGTH_PTR

SQL_DESC_LENGTH

SQL_DESC_OCTET_LENGTH

SQL_DESC_DATETIME_INTERVAL_CODE

SQL_DESC_SCALE

SQL_DESC_PRECISION

SQL_DESC_TYPE

SQL_DESC_NAME

SQL_DESC_UNNAMED

SQL_DESC_NULLABLE

La biblioteca de cursores ejecuta llamadas a SQLSetDescRec para una columna de marcador.

Cuando se trabaja con un controlador ODBC 2.x , la biblioteca de cursores devuelve SQLSTATE HY090 (longitud de cadena o búfer no válida) cuando se llama a SQLSetDescField o SQLSetDescRec para establecer el campo SQL_DESC_OCTET_LENGTH para el registro de marcador de un ARD en un valor no igual a 4. Cuando se trabaja con un controlador ODBC 3.x , la biblioteca de cursores permite que el búfer tenga cualquier tamaño.

La biblioteca de cursores ejecuta SQLSetDescField cuando se llama para devolver el valor del campo SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_BIND_TYPE, SQL_DESC_ROW_ARRAY_SIZE o SQL_DESC_ROW_STATUS_PTR. Estos campos se pueden devolver para cualquier fila, no solo para la fila de marcador.

La biblioteca de cursores no ejecuta SQLSetDescField para cambiar ningún campo descriptor distinto de los campos mencionados anteriormente. Si una aplicación llama a SQLSetDescField para establecer cualquier otro campo mientras se carga la biblioteca de cursores, la llamada se pasa al controlador.

La biblioteca de cursores admite el cambio dinámico de los campos SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR y SQL_DESC_OCTET_LENGTH_PTR de cualquier fila de un descriptor de fila de aplicación (después de una llamada a SQLExtendedFetch, SQLFetch o SQLFetchScroll). El campo SQL_DESC_OCTET_LENGTH_PTR se puede cambiar a un puntero nulo solo para desenlace el búfer de longitud de una columna.

La biblioteca de cursores no admite el cambio del campo SQL_DESC_BIND_TYPE en un APD o ARD cuando un cursor está abierto. El campo SQL_DESC_BIND_TYPE solo se puede cambiar después de cerrar el cursor y antes de que se abra un nuevo cursor. Los únicos campos descriptores que admite la biblioteca de cursores cambian cuando se abre un cursor son SQL_DESC_ARRAY_STATUS_PTR, SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, SQL_DESC_OCTET_LENGTH_PTR y SQL_DESC_ROWS_PROCESSED_PTR.

La biblioteca de cursores no admite la modificación del campo de SQL_DESC_COUNT del ARD después de que se haya llamado a SQLExtendedFetch o SQLFetchScroll y antes de que se haya cerrado el cursor.