Datos devueltos por las funciones de catálogo

Cada función de catálogo devuelve datos como un conjunto de resultados. Este conjunto de resultados no es diferente de ningún otro conjunto de resultados. Normalmente, se genera mediante una instrucción SELECT predefinida y parametrizada que está codificada de forma rígida en el controlador o almacenada en un procedimiento del origen de datos. Para obtener información sobre cómo recuperar datos de un conjunto de resultados, consulte ¿Se creó un conjunto de resultados?

El conjunto de resultados de cada función de catálogo se describe en la entrada de referencia de esa función. Además de las columnas enumeradas, el conjunto de resultados puede contener columnas específicas del controlador después de la última columna predefinida. Estas columnas (si las hay) se describen en la documentación del controlador.

Las aplicaciones deben enlazar columnas específicas del controlador relativas al final del conjunto de resultados. Es decir, deben calcular el número de una columna específica del controlador como el número de la última columna —recuperada con SQLNumResultCols— menos el número de columnas que se producen después de la columna requerida. Esto ahorra tener que cambiar la aplicación cuando se agreguen nuevas columnas al conjunto de resultados en versiones futuras del controlador u ODBC. Para que este esquema funcione, los controladores deben agregar nuevas columnas específicas del controlador antes de las columnas específicas del controlador antiguas, de modo que los números de columna no cambien con respecto al final del conjunto de resultados.

Los identificadores que se devuelven en el conjunto de resultados no están entre comillas, aunque contengan caracteres especiales. Por ejemplo, supongamos que el carácter de comilla del identificador (que es específico del controlador y que se devuelve a través de SQLGetInfo) es una comilla doble (") y la tabla Accounts Payable contiene una columna denominada Customer Name. En la fila devuelta por SQLColumns para esta columna, el valor de la columna TABLE_NAME es Accounts Payable, no "Accounts Payable", y el valor de la columna COLUMN_NAME es Customer Name, no "Customer Name". Para recuperar los nombres de los clientes en la tabla Accounts Payable, la aplicación entrecomillaría estos nombres:

SELECT "Customer Name" FROM "Accounts Payable"  

Para obtener más información, consulte Identificadores entre comillas.

Las funciones de catálogo se basan en un modelo de autorización similar a SQL en el que se establece una conexión basada en un nombre de usuario y una contraseña, y se devuelven solo los datos para los que el usuario tenga un privilegio. La protección con contraseña de archivos individuales, que no se adapta a este modelo, está definida por el controlador.

Los conjuntos de resultados devueltos por las funciones de catálogo casi nunca son actualizables, y las aplicaciones no deben esperar poder cambiar la estructura de la base de datos mediante el cambio de los datos de estos conjuntos de resultados.