Función SQLNumResultCols
Conformidad
Versión introducida: Cumplimiento de estándares ODBC 1.0: ISO 92
Resumen
SQLNumResultCols devuelve el número de columnas de un conjunto de resultados.
Sintaxis
SQLRETURN SQLNumResultCols(
SQLHSTMT StatementHandle,
SQLSMALLINT * ColumnCountPtr);
Argumentos
StatementHandle
[Entrada] Identificador de instrucciones.
ColumnCountPtr
[Salida] Puntero a un búfer en el que se devuelve el número de columnas del conjunto de resultados. Este recuento no incluye una columna de marcador enlazada.
Devoluciones
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR o SQL_INVALID_HANDLE.
Diagnóstico
Cuando SQLNumResultCols devuelve SQL_ERROR o SQL_SUCCESS_WITH_INFO, se puede obtener un valor SQLSTATE asociado llamando a SQLGetDiagRec con un HandleType de SQL_HANDLE_STMT y un identificador de StatementHandle. En la tabla siguiente se enumeran los valores SQLSTATE devueltos normalmente por SQLNumResultCols y se explica cada uno en el contexto de esta función; la notación "(DM)" precede a las descripciones de SQLSTATEs devueltas por el Administrador de controladores. El código de retorno asociado a cada valor SQLSTATE es SQL_ERROR, a menos que se indique lo contrario.
SQLSTATE | Error | Descripción |
---|---|---|
01000 | Advertencia general | Mensaje informativo específico del controlador. (Function devuelve SQL_SUCCESS_WITH_INFO). |
08S01 | Error de vínculo de comunicación | Se produjo un error en el vínculo de comunicación entre el controlador y el origen de datos al que se conectó el controlador antes de que la función completara el procesamiento. |
HY000 | Error general | Se produjo un error para el que no había ningún SQLSTATE específico y para el que no se definió SQLSTATE específico de la implementación. El mensaje de error devuelto por SQLGetDiagRec en el búfer *MessageText describe el error y su causa. |
HY001 | Error de asignación de memoria | El controlador no pudo asignar memoria necesaria para admitir la ejecución o finalización de la función. |
HY008 | Operación cancelada | El procesamiento asincrónico se ha habilitado para StatementHandle. Se llamó a la función y antes de completar la ejecución, se llamó a SQLCancel o SQLCancelHandle en StatementHandle; la función se llamó de nuevo en StatementHandle. Se llamó a la función y antes de completar la ejecución, se llamó a SQLCancel o SQLCancelHandle en statementHandle desde un subproceso diferente en una aplicación multiproceso. |
HY010 | Error de secuencia de funciones | (DM) Se llamó a una función de ejecución asincrónica para el identificador de conexión asociado a StatementHandle. Esta función asincrónica todavía se estaba ejecutando cuando se llamó a la función SQLNumResultsCols . (DM) SQLExecute, SQLExecDirect o SQLMoreResults se llamó a para statementHandle y devolvió SQL_PARAM_DATA_AVAILABLE. Se llamó a esta función antes de recuperar los datos para todos los parámetros transmitidos. (DM) Se llamó a la función antes de llamar a SQLPrepare o SQLExecDirect para StatementHandle. (DM) Se llamó a una función que ejecuta de forma asincrónica (no esta) para statementHandle y todavía se estaba ejecutando cuando se llamó a esta función. (DM) SE llamó a SQLExecute, SQLExecDirect, SQLBulkOperations o SQLSetPos para el statementHandle y devolvió SQL_NEED_DATA. Se llamó a esta función antes de enviar datos para todos los parámetros o columnas de datos en ejecución. Consulte Función SQLPrepare para obtener más información sobre cuándo se puede liberar un identificador de instrucción. |
HY013 | Error de administración de memoria | No se pudo procesar la llamada de función porque no se pudo tener acceso a los objetos de memoria subyacentes, posiblemente debido a condiciones de memoria baja. |
HY117 | La conexión se suspende debido al estado de transacción desconocido. Solo se permiten las funciones de desconexión y solo lectura. | (DM) Para obtener más información sobre el estado suspendido, vea Función SQLEndTran. |
HYT01 | Se ha agotado el tiempo de espera de la conexión. | El período de tiempo de espera de conexión expiró antes de que el origen de datos respondiera a la solicitud. El período de tiempo de espera de conexión se establece a través de SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | El controlador no admite esta función | (DM) El controlador asociado a StatementHandle no admite la función . |
IM017 | El sondeo está deshabilitado en modo de notificación asincrónica | Cada vez que se usa el modelo de notificación, el sondeo está deshabilitado. |
IM018 | No se ha llamado a SQLCompleteAsync para completar la operación asincrónica anterior en este identificador. | Si la llamada de función anterior en el identificador devuelve SQL_STILL_EXECUTING y si el modo de notificación está habilitado, se debe llamar a SQLCompleteAsync en el identificador para realizar el procesamiento posterior y completar la operación. |
SQLNumResultCols puede devolver cualquier SQLSTATE que SQLPrepare o SQLExecute pueda devolver cuando se llame después de SQLPrepare y antes de SQLExecute, dependiendo de cuándo el origen de datos evalúe la instrucción SQL asociada a la instrucción .
Comentarios
Solo se puede llamar a SQLNumResultCols correctamente cuando la instrucción está en estado preparado, ejecutado o colocado.
Si la instrucción asociada a StatementHandle no devuelve columnas, SQLNumResultCols establece *ColumnCountPtr en 0.
El número de columnas devueltas por SQLNumResultCols es el mismo valor que el campo SQL_DESC_COUNT del IRD.
Para obtener más información, vea ¿Se creó un conjunto de resultados? y ¿Cómo se usan los metadatos?.
Funciones relacionadas
Para obtener información sobre | Vea |
---|---|
Enlazar un búfer a una columna de un conjunto de resultados | Función SQLBindCol |
Cancelación del procesamiento de instrucciones | Función SQLCancel |
Devolver información sobre una columna en un conjunto de resultados | Función SQLColAttribute |
Devolver información sobre una columna en un conjunto de resultados | Función SQLDescribeCol |
Ejecución de una instrucción SQL | Función SQLExecDirect |
Ejecución de una instrucción SQL preparada | Función SQLExecute |
Capturar un bloque de datos o desplazarse por un conjunto de resultados | Función SQLFetchScroll |
Capturar una sola fila o un bloque de datos en una dirección de solo avance | Función SQLFetch |
Capturar parte o toda una columna de datos | Función SQLGetData |
Preparación de una instrucción SQL para su ejecución | Función SQLPrepare |
Configuración de las opciones de desplazamiento del cursor | Función SQLSetStmtAttr |