Tipo de búfer de datos
La aplicación especifica el tipo de datos C de un búfer. Con una sola variable, esto ocurre cuando la aplicación asigna la variable. Con la memoria genérica (es decir, la memoria a la que apunta un puntero de tipo nulo), se produce cuando la aplicación convierte la memoria en un tipo determinado. El controlador detecta este tipo de dos maneras:
Argumento de tipo de búfer de datos. Los búferes usados para transferir valores de parámetros y datos del conjunto de resultados, como el búfer enlazado con TargetValuePtr en SQLBindCol, suelen tener un argumento de tipo asociado, como el argumento TargetType en SQLBindCol. En este argumento, la aplicación pasa el identificador de tipo C que corresponde al tipo del búfer. Por ejemplo, en la siguiente llamada a SQLBindCol, el valor SQL_C_TYPE_DATE indica al controlador que el búfer de Date es SQL_DATE_STRUCT:
SQL_DATE_STRUCT Date; SQLINTEGER DateInd; SQLBindCol(hstmt, 1, SQL_C_TYPE_DATE, &Date, 0, &DateInd);
Para obtener más información sobre los identificadores de tipo, consulte la sección Tipos de datos en ODBC más adelante en esta sección.
Tipo predefinido. Los búferes usados para enviar y recuperar opciones o atributos, como el búfer al que apunta el argumento InfoValuePtr en SQLGetInfo, tienen un tipo fijo que depende de la opción especificada. El controlador supone que el búfer de datos es de este tipo; es responsabilidad de la aplicación asignar un búfer de este tipo. Por ejemplo, en la siguiente llamada a SQLGetInfo, el controlador supone que el búfer es un entero de 32 bits porque esto es lo que requiere la opción SQL_STRING_FUNCTIONS:
SQLUINTEGER StringFuncs; SQLGetInfo(hdbc, SQL_STRING_FUNCTIONS, (SQLPOINTER) &StringFuncs, 0, NULL);
El controlador usa el tipo de datos C para interpretar los datos del búfer.