Detección y proceso de condiciones de error y de aviso en aplicaciones de lenguaje principal

Un programa de aplicación que contiene sentencias de SQL ejecutables puede utilizar los valores SQLCODE o SQLSTATE para manejar los códigos de retorno de las sentencias de SQL.

Hay dos maneras para que la aplicación acceda a estos valores.
  • Incluir una estructura llamada SQLCA. La SQLCA incluye una variable entera llamada SQLCODE y una variable de serie de caracteres llamada SQLSTATE. En REXX, se proporciona automáticamente una SQLCA. En otros lenguajes, la SQLCA se puede obtener utilizando la sentencia INCLUDE SQLCA.
  • Si LANGLEVEL SQL92E se ha especificado como opción de precompilación, puede declararse una variable denominada SQLCODE o SQLSTATE en la sección de declaración de SQL del programa. Si no se ha declarado ninguna de estas variables en la sección de declaración de SQL, se da por supuesta la declaración de una variable denominada SQLCODE en algún otro lugar del programa. Con LANGLEVEL SQL92E, el programa no debe tener una sentencia INCLUDE SQLCA.
El gestor de bases de datos establece una variable SQLCODE tras la ejecución de cada sentencia de SQL. Todos los gestores de bases de datos se ajustan al estándar SQL ISO/ANSI, tal como sigue:
  • Si SQLCODE = 0 y SQLWARN0 está en blanco, la ejecución ha sido satisfactoria.
  • Si SQLCODE = 100, no se ha encontrado "ningún dato". Por ejemplo, una sentencia FETCH no ha devuelto ningún dato, porque el cursor estaba situado después de la última fila de la tabla de resultados.
  • Si SQLCODE > 0 y no = 100, la ejecución ha sido satisfactoria con un aviso.
  • Si SQLCODE = 0 y SQLWARN0 = 'W', la ejecución ha sido satisfactoria, pero se han establecido uno o más indicadores de aviso.
  • Si SQLCODE < 0, la ejecución no ha sido satisfactoria.

El significado de los valores SQLCODE que no sean 0 ni 100 es específico del producto.

El gestor de bases de datos establece una variable SQLSTATE tras la ejecución de cada sentencia de SQL. Los programas de aplicación pueden comprobar la ejecución de las sentencias de SQL probando SQLSTATE en lugar de SQLCODE. SQLSTATE proporciona códigos comunes para las condiciones de errores comunes. Los programas de aplicación pueden realizar pruebas para comprobar si existen errores o clases de errores específicos. El esquema de codificación es el mismo para todos los gestores de bases de datos IBM® y se basa en el estándar ISO/ANSI SQL92 .