¿Era un conjunto creado de resultados?
En la mayoría de las situaciones, los programadores de aplicaciones saben si las instrucciones que ejecuta su aplicación crearán un conjunto de resultados. Este es el caso si la aplicación usa instrucciones SQL codificadas de forma rígida escritas por el programador. Normalmente, es el caso cuando la aplicación construye instrucciones SQL en tiempo de ejecución: el programador puede incluir fácilmente código que marca si se está construyendo una instrucción SELECT o una instrucción INSERT . En algunas situaciones, el programador no puede saber si una instrucción creará un conjunto de resultados. Esto es true si la aplicación proporciona una manera de que el usuario escriba y ejecute una instrucción SQL. También es cierto cuando la aplicación construye una instrucción en tiempo de ejecución para ejecutar un procedimiento.
En tales casos, la aplicación llama a SQLNumResultCols para determinar el número de columnas del conjunto de resultados. Si es 0, la instrucción no creó un conjunto de resultados; si es cualquier otro número, la instrucción creó un conjunto de resultados.
La aplicación puede llamar a SQLNumResultCols en cualquier momento después de preparar o ejecutar la instrucción. Sin embargo, dado que algunos orígenes de datos no pueden describir fácilmente los conjuntos de resultados creados por instrucciones preparadas, el rendimiento se verá afectado si se llama a SQLNumResultCols después de preparar una instrucción, pero antes de que se ejecute.
Algunos orígenes de datos también admiten determinar el número de filas que devuelve una instrucción SQL en un conjunto de resultados. Para ello, la aplicación llama a SQLRowCount. Exactamente lo que representa el recuento de filas se indica mediante el valor de la opción SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2 o SQL_STATIC_CURSOR_ATTRIBUTES2 (dependiendo del tipo del cursor) devuelta por una llamada a SQLGetInfo. Esta máscara de bits indica para cada tipo de cursor si el recuento de filas devuelto es exacto, aproximado o no está disponible en absoluto. Si los recuentos de filas de cursores estáticos o controlados por conjuntos de claves se ven afectados por los cambios realizados a través de SQLBulkOperations o SQLSetPos, o por instrucciones de actualización o eliminación posicionadas, depende de otros bits devueltos por los mismos argumentos de opción enumerados anteriormente. Para obtener más información, consulte la descripción de la función SQLGetInfo.