Al recuperar los resultados (avanzados)

Una aplicación puede especificar que se agrega un desplazamiento a las direcciones de búfer de datos enlazadas y las direcciones de búfer de longitud o indicador correspondientes cuando se llama a SQLBulkOperations, SQLFetch, SQLFetchScroll o SQLSetPos . Los resultados de estas adiciones determinan las direcciones usadas en estas operaciones.

Los desplazamientos de enlace permiten que una aplicación cambie los enlaces sin llamar a SQLBindCol para las columnas enlazadas anteriormente. Una llamada a SQLBindCol para volver a enlazar los datos cambia la dirección del búfer y el puntero de longitud o indicador. La reenlazamiento con un desplazamiento, por otro lado, simplemente agrega un desplazamiento a la dirección del búfer de datos enlazado existente y la dirección del búfer de longitud o indicador. Cuando se usan desplazamientos, los enlaces son una "plantilla" de cómo se diseñan los búferes de aplicación y la aplicación puede mover esta "plantilla" a diferentes áreas de memoria cambiando el desplazamiento. Se puede especificar un nuevo desplazamiento en cualquier momento y siempre se agrega a los valores enlazados originalmente.

Para especificar un desplazamiento de enlace, la aplicación establece el atributo de instrucción SQL_ATTR_ROW_BIND_OFFSET_PTR en la dirección de un búfer SQLINTEGER. Antes de que la aplicación llame a una función que use los enlaces, como SQLBulkOperations, SQLFetch, SQLFetchScroll o SQLSetPos, coloca un desplazamiento en bytes en este búfer, siempre y cuando la dirección del búfer de longitud o indicador no sea 0 y siempre que la columna enlazada esté en el conjunto de resultados. La suma de la dirección y el desplazamiento deben ser una dirección válida. (Esto significa que o tanto el desplazamiento como la dirección a la que se agrega el desplazamiento pueden no ser válidos, siempre y cuando su suma sea una dirección válida). El atributo de instrucción SQL_ATTR_ROW_BIND_OFFSET_PTR es un puntero para que el valor de desplazamiento se pueda aplicar a más de un conjunto de datos de enlace, todos los cuales se pueden cambiar cambiando un valor de desplazamiento. Una aplicación debe asegurarse de que el puntero sigue siendo válido hasta que se cierre el cursor.

Nota:

Los controladores ODBC 2.x no admiten desplazamientos de enlace.

Esta sección contiene los temas siguientes.