Asignar almacenamiento
Una aplicación puede asignar almacenamiento para los resultados antes o después de ejecutar una instrucción SQL. Si una aplicación prepara o ejecuta primero la instrucción SQL, puede realizar consultas sobre el conjunto de resultados antes de asignar almacenamiento para los resultados. Por ejemplo, si no se conoce el conjunto de resultados, la aplicación debe recuperar el número de columnas para poder asignar almacenamiento al mismo.
Para asociar almacenamiento a una columna de datos, una aplicación llama a SQLBindCol y le pasa:
El tipo al que deben convertirse los datos.
La dirección de un búfer de salida para los datos.
La aplicación debe asignar este búfer, que debe ser lo suficientemente grande como para albergar los datos en el formato al que se conviertan.
La longitud del búfer de salida.
Este valor se omite si los datos devueltos tienen un ancho fijo en C, como un entero, un número real o una estructura de fecha.
La dirección de un búfer de almacenamiento donde devolver el número de bytes de los datos disponibles.
Una aplicación también puede enlazar las columnas del conjunto de resultados a matrices de variables de programa para que las filas del conjunto de resultados puedan recuperarse en bloques. Existen dos tipos distintos de enlaces de matriz:
El enlace de modo de columna finaliza cuando cada columna se enlaza a su propia matriz de variables.
El enlace de modo de columna se especifica llamando a SQLSetStmtAttr con Attribute establecido en SQL_ATTR_ROW_BIND_TYPE y ValuePtr establecido en SQL_BIND_BY_COLUMN. Todas las matrices deben tener el mismo número de elementos.
El enlace de modo de fila finaliza cuando todos los parámetros de la instrucción SQL se enlazan como una unidad a una matriz de estructuras que contienen variables individuales para los parámetros.
El enlace de modo de fila se especifica llamando a SQLSetStmtAttr con Attribute establecido en SQL_ATTR_ROW_BIND_TYPE y ValuePtr establecido en el tamaño de la estructura que contiene las variables que recibirán las columnas del conjunto de resultados.
La aplicación también establece SQL_ATTR_ROW_ARRAY_SIZE en el número de elementos de las matrices de columnas o filas y establece SQL_ATTR_ROW_STATUS_PTR y SQL_ATTR_ROWS_FETCHED_PTR.