Notas del release


40.8 Capítulo 5. Funciones de CLI de DB2

40.8.1 SQLBindFileToParam - Vincular referencia de archivo LOB a parámetro de LOB

El último parámetro - IndicatorValue - de la función de CLI SQLBindFileToParam() se documenta actualmente como "salida (diferida)". Debe ser "entrada (diferida)".

40.8.2 SQLColAttribute -- Devolver un atributo de columna

Las actualizaciones siguientes son añadidos a la columna "Descripción" de los argumentos SQL_DESC_AUTO_UNIQUE_VALUE y SQL_DESC_UPDATABLE:

SQL_DESC_AUTO_UNIQUE_VALUE
Se devuelve SQL_FALSE en NumericAttributePtr para todos los tipos de datos SQL de DB2. Actualmente, la CLI de DB2 no es capaz de determinar si una columna es de identidad, por lo que siempre se devuelve SQL_FALSE. Esta limitación no se ajusta por completo a las especificaciones de ODBC. Las versiones futuras de la CLI de DB2 para servidores Unix y Windows proporcionarán un soporte auto-exclusivo.

SQL_DESC_UPDATABLE
Indica si el tipo de datos de la columna se puede actualizar:

40.8.3 SQLGetData - Obtener datos de una columna

El texto siguiente sustituye la frase actual que aparece en la columna Explicación para SQLSTATE 22007 de la tabla SQLSTATE para SQLGetData:

Se ha indicado la conversión de una serie a un formato de fecha y hora, pero se ha especificado un valor o una representación de serie no válido o el valor era una fecha no válida.

40.8.4 SQLGetInfo - Obtener información general

La información siguiente corrige la información contenida en la sección "Uso" del apartado "Información devuelta por SQLGetInfo":

SQL_DATABASE_NAME (serie)
Nombre de la base de datos en uso actualmente.
Nota:
Esta serie es igual que la devuelta por la sentencia SELECT CURRENT SERVER en los sistemas que no son un sistema principal. Para las bases de datos de sistema principal, como por ejemplo DB2 para OS/390 o DB2 para OS/400, la serie devuelta es el nombre de base de datos DCS proporcionado al emitir el mandato DCS DATABASE DIRECTORY en la pasarela de DB2 Connect.

40.8.5 SQLGetLength - Recuperar longitud del valor de una serie

La información siguiente corrige la nota al pie de la "Tabla 113. Argumentos de SQLGetLength" :

Nota: a Está en los caracteres para datos DBCLOB.

40.8.6 SQLNextResult - Asociar el conjunto de resultados siguiente con otro descriptor de contexto de sentencias

Debería añadirse el texto siguiente al Capítulo 5, "Funciones CLI de DB2":

40.8.6.1 Objetivo

Especificación: DB2 CLI 7.x

40.8.6.2 Sintaxis

SQLRETURN   SQLNextResult   (SQLHSTMT	StatementHandle1
                             SQLHSTMT	StatementHandle2);

40.8.6.3 Argumentos de función


Tabla 13. Argumentos de SQLNextResult

Tipo de datos Argumento Utilización Descripción
SQLHSTMT StatementHandle entrada Descriptor de contexto de sentencias.
SQLHSTMT StatementHandle entrada Descriptor de contexto de sentencias.

40.8.6.4 Utilización

Un procedimiento almacenado devuelve varios conjuntos de resultados dejando uno o más cursores abiertos después de salir. Al primer conjunto de resultados se accede siempre utilizando el descriptor de contexto de sentencias que llamó al procedimiento almacenado. Si se devuelven varios conjuntos de resultados, puede utilizarse SQLMoreResults() o SQLNextResult() para describir y captar el conjunto de resultados.

SQLMoreResults() se utiliza para cerrar el cursor para el primer conjunto de resultados y permitir que se procese el conjunto de resultados siguiente, en tanto que SQLNextResult() desplaza el siguiente conjunto de resultados a StatementHandle2, sin cerrar el cursor en StatementHandle1. Ambas funciones devuelven SQL_NO_DATA_FOUND si no hay conjuntos de resultados que haya que captar.

La utilización de SQLNextResult() permite el proceso de los conjuntos de resultados en el orden que sea una vez se hayan transferido a otros descriptores de contexto de sentencias. Las llamadas mixtas a SQLMoreResults() y SQLNextResult() se permiten hasta que no haya más cursores (conjuntos de resultados abiertos) en StatementHandle1.

Cuando SQLNextResult() devuelve SQL_SUCCESS, el conjunto de resultados siguiente ya no está asociado con StatementHandle1. En su lugar, el conjunto de resultados siguiente se asocia con StatementHandle2, como si una llamada a SQLExecDirect() hubiera acabado de ejecutar satisfactoriamente una consulta sobre StatementHandle2. Por tanto, el cursor puede describirse utilizando SQLNumResultSets(), SQLDescribeCol() o SQLColAttribute().

Una vez se ha llamado a SQLNextResult(), el conjunto de resultados que en este momento está asociado con StatementHandle2 se elimina de la cadena de conjuntos de resultados restantes y no podrá utilizarse de nuevo ni en SQLNextResult() ni en SQLMoreResults(). Esto significa que para 'n' conjuntos de resultados, SQLNextResult() puede llamarse satisfactoriamente como máximo 'n-1' veces.

Si SQLFreeStmt() se llama con la opción SQL_CLOSE, o SQLFreeHandle() se llama con HandleType establecido en SQL_HANDLE_STMT, se descartan todos los conjuntos de resultados pendientes sobre este descriptor de contexto de sentencias.

SQLNextResult() devuelve SQL_ERROR si StatementHandle2 tiene un cursor abierto o StatementHandle1 y StatementHandle2 no están en la misma conexión. Si se devuelve algún error o aviso, SQLError() debe llamarse siempre en StatementHandle1.

Nota:
SQLMoreResults() también funciona con una consulta parametrizada con una matriz de valores de parámetros de entrada especificados con SQLParamOptions() y SQLBindParameter(). Sin embargo, SQLNextResult() no da soporte a esta opción.

40.8.6.5 Códigos de retorno

40.8.6.6 Diagnósticos


Tabla 14. Los SQLSTATE de SQLNextResult

SQLSTATE Descripción Explicación
40003 08S01 Anomalía de enlace de comunicaciones. El enlace de comunicaciones entre la aplicación y la fuente de datos ha fallado antes de que se completara la función.
58004 Anomalía de sistema inesperada. Error de sistema irrecuperable.
HY001 Anomalía de asignación de memoria. DB2 CLI no ha podido asignar la memoria necesaria para dar soporte a la ejecución o cumplimentación de la función.
HY010 Error de secuencia de función.

La función se ha llamado mientras estaba en una operación de datos al ejecutar (SQLParamData(), SQLPutData()).

StatementHandle2 tiene un cursor abierto asociado al mismo.

La función se llamó mientras estaba dentro de una operación BEGIN COMPOUND y END COMPOUND SQL.

HY013 Error de manejo de memoria inesperado. DB2 CLI no ha podido acceder a la memoria necesaria para dar soporte a la ejecución o cumplimentación de la función.
HYT00 Ha caducado el tiempo de espera excedido. El tiempo de espera ha caducado antes de que la fuente de datos devolviera el conjunto de resultados. Los tiempos de espera excedidos sólo están soportados en sistemas no multitarea como por ejemplo 3.1 y Macintosh System 7. El período de tiempo de espera puede establecerse utilizando el atributo SQL_ATTR_QUERY_TIMEOUT para SQLSetConnectAttr().

40.8.6.7 Restricciones

Para las consultas parametrizadas sólo puede utilizarse SQLMoreResults().

40.8.6.8 Referencias

40.8.7 SQLSetEnvAttr - Establecer un atributo de entorno

A continuación, se describe un atributo de entorno adicional que pertenece a la sección acerca de los atributos de entorno, del apartado sobre utilización:

SQL_ATTR_KEEPCTX
Valor entero de 32 bits que especifica si debe mantenerse el contexto cuando se libera el descriptor de contexto del entorno. Este atributo debe establecerse al nivel del entorno. Las aplicaciones de multihebras pueden utilizarlo para gestionar contextos asociados con las conexiones, los recursos de base de datos y la transmisión de datos de cada hebra. Los valores posibles son:

Nota:
Ésta es una ampliación de IBM.

40.8.8 SQLSetStmtAttr -- Establecer opciones relativas a una sentencia

La información siguiente sustituye la información existente para el atributo de sentencia SQL_ATTR_QUERY_TIMEOUT:

SQL_ATTR_QUERY_TIMEOUT (DB2 CLI v2)
Valor entero de 32 bits que es el número de segundos que se deberá esperar a que se ejecute una sentencia SQL antes de volver a la aplicación. Se puede establecer y utilizar esta opción para terminar las consultas de larga ejecución. El valor 0 significa que no hay tiempo de espera. La CLI de DB2 soporta valores distintos de cero para todas las plataformas que soportan múltiples hebras.


[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]