Puntos clave: El Área de Comunicación SQL (SQLCA) en Db2 12 está crucial para gestionar la ejecución y el manejo de errores de SQL, ya que incluye campos clave como SQLCODE y SQLSTATE para indicar el éxito o fracaso de operaciones.
- SQLCA proporciona indicadores esenciales de error y advertencia.
- Ayuda a diagnosticar problemas durante la ejecución de las sentencias SQL.
| Nombre ensamblador, COBOL o PL/I | Nombre C | Tipo de datos | Propósito |
| SQLCAID | sqlcaid | CHAR(8) | 'llamativo' para volcados de almacenamiento, que contiene el texto 'SQLCA'. El sexto byte están 'L' si la información del número de línea se está devuelto al analizar una sentencia dinámica o un procedimiento SQL nativo. No está activado al procesar un procedimiento SQL externo. |
| SQLCABC | sqlcabc | ENTERO | Contiene la longitud del SQLCA: 136 |
| SQLCODE | SQLCODE | ENTERO | Contiene el código de retorno SQL. 0 = Ejecución exitosa Positivo = Ejecución exitosa, pero con condición de excepción Negativo = condición de error |
| SQLERRML | sqlerrml | SMALLINT | El indicador de longitud para SQLERRMC, en el rango de 0 a 70.0, significa que el valor de SQLERRMC no está pertinente |
| SQLERRMC | sqlerrmc | VARCHAR (70) | Contiene uno o más tokens, separados por X'FF', que son sustituidos por variables en las descripciones de condiciones de error. Puede contener tokens truncados. Una longitud de mensaje de 70 bytes indica un posible truncamiento |
| SQLERRP | sqlerrp | CHAR(8) | Proporciona una firma de producto y, en caso de error, información diagnóstica como el nombre del módulo que detectó el error. Los tres primeros caracteres son 'DSN' |
| SQLERRD(1) | sqlerrd[0] | ENTERO | Para un cursor estático sensible, contiene el número de filas en una tabla de resultados cuando la posición del cursor están después de la última fila (ese están, cuando el código SQL están igual a +100). También puede contener un código de error interno. |
| SQLERRD(2) | sqlerrd[1] | ENTERO | Para un cursor estático sensible, contiene el número de filas en una tabla de resultados cuando la posición del cursor están después de la última fila (ese están, cuando el código SQL están igual a +100). También puede contener un código de error interno. |
| SQLERRD(3) | sqlerrd[2] | ENTERO | Contiene el número de filas que califican para ser eliminadas, insertadas o actualizadas tras una instrucción INSERT, MERGE, UPDATE o DELETE. El número excluye filas afectadas por los disparadores o restricciones de integridad referencial, el número excluye filas afectadas por disparadores, restricciones de integridad referencial o filas insertadas que son el resultado de procesar una cláusula FOR DE durante un periodo de BUSINESS_TIME. Para el OPEN de un cursor para un cursor SELECT con una sentencia de cambio de datos o para un SELECT INTO, SQLERRD(3) contiene el número de filas afectadas por la sentencia de cambio de datos emedddada. El valor están 0 si falla la sentencia SQL, indicando que todos los cambios realizados en la ejecución de la sentencia se cancelaron. Para una sentencia DELETE, el valor será -1 si la operación están una eliminación masiva de una tabla en un espacio segmentado y la sentencia DELETE no incluía criterios de selección. Si la eliminación fue contra una vista, ni la sentencia DELETE ni la definición de la vista incluyeron criterios de selección. Para una sentencia TRUNCATE, el valor será -1. Para una sentencia REFRESH TABLE, SQLERRD(3) contiene el número de filas insertadas en la tabla de consulta materializada. Para una FETCH orientada a filas, contiene el número de filas obtenidas. Para SQLCODES -911 y -913, SQLERRD(3) contiene el código de razón para el timeout o interbloqueo. Cuando se está encontrando un error al analizar una sentencia dinámica, o al analizar la vinculación, o ejecutar un procedimiento SQL nativo, SQLERRD(3) contendrá el número de línea donde se encontró el error. El sexto byte de SQLCAID debe ser 'L' para que este sea un número de línea válido. Este valor solo tendrá sentido si la fuente de la instrucción contiene nuevos caracteres de control de línea. Esta información no se está devuelto para un procedimiento SQL externo |
| SQLERRD(4) | sqlerrd[3] | ENTERO | generalmente contiene temporizadores, un valor corto de coma flotante que indica una estimación aproximada de los recursos necesarios. No refleja una estimación del tiempo requerido. Al preparar una instrucción SQL definida dinámicamente, te puedes utilizar este campo como indicador del coste relativo de la instrucción SQL preparada. Para una instrucción concreta, este número puede variar con cambios en las estadísticas del catálogo. También está sujeto a cambios entre versiones de DB2 para z/OS |
| SQLERRD(5) | sqlerrd[4] | ENTERO | Contiene la posición o columna de un error de sintaxis para una instrucción PREPARE o EXECUTE IMMEDIATE |
| SQLERRD(6) | sqlerrd[5] | ENTERO | Código de error interno |
| SQLWARN0 | SQLWARN0 | CHAR(1) | W si al menos otro indicador también contiene una W; de lo contrario contiene un espacio en blanco |
| SQLWARN1 | SQLWARN1 | CHAR(1) | W si el valor de una columna de cadena se truncó al asignarse a una variable anfitrión. Contiene una N para cursores no desplazables y S para cursores desplazables después de la instrucción OPEN CURSOR o ALLOCATE CURSOR. Si el parámetro del subsistema DISABSCL se está asignado a sí, el campo no se pondrá en N para cursores no desplazables |
| SQLWARN2 | SQLWARN2 | CHAR(1) | W si se eliminan valores nulos del argumento de una función columna; no necesariamente se establece en W para la función MIN porque sus resultados no son dependientes de la eliminación de valores nulos |
| SQLWARN3 | SQLWARN3 | CHAR(1) | W si el número de columnas de resultado está mayor que el número de variables del host. Z si se proporcionaron menos ubicaciones en la instrucción ASSOCIATE LOCATORS que el procedimiento almacenado devuelto |
| SQLWARN4 | SQLWARN4 | CHAR(1) | W si una instrucción UPDATE o DELETE preparada no incluye una cláusula WHERE. Para cursor desplazable, D para cursores dinámicos sensibles, I para cursores insensibles y S para cursores sensibles tras la instrucción OPEN CURSOR o ALLOCATE cursor; en blanco si no es desplazable. Si DSNZPARM DISABSCL está configurado en SÍ, fijécese en N para cursores no desplazables |
| SQLWARN5 | SQLWARN5 | CHAR(1) | W si la sentencia SQL no se ejecutó porque no está válida en DB2 para z/OX. Valor de carácter 1 (solo lectura), 2 (lectura y eliminación) o 3(lectura, eliminación y actualización) para reflejar la capacidad del cursor después de la instrucción OPEN CURSOR o ALLOCATE CURSOR Si DISABSCL está configurado en SÍ, el campo no se pondrá en N para cursores no desplazables |
| SQLWARN6 | SQLWARN6 | CHAR(1) | W si la adición de una duración de mes o año a un valor de FECHA o HORA resulta en un día inválido. Indica que el valor del día se cambió al último día del mes para Haz válido el resultado |
| SQLWARN7 | SQLWARN7 | CHAR(1) | W si uno o más dígitos no nulos se eliminaban de la parte fraccionaria de un número usada como operando de una operación de multiplicación o división decimal |
| SQLWARN8 | SQLWARN8 | CHAR(1) | W si un carácter que no puede convertirse fue reemplazado por un carácter sustituto |
| SQLWARN9 | SQLWARN9 | CHAR(1) | W si se ignoraron las excepciones aritméticas durante el procesamiento COUNT o COUNT_BIG. Z si el procedimiento almacenado devuelve múltiples conjuntos de resultados |
| SQLWARNA | SQLWARNA | CHAR(1) | W si al menos un campo de carácter de los nombres o etiquetas de SQLCA o SQLDA está inválido debido a un error de conversión de caracteres |
| SQLSTATE | sqlstate | CHAR(5) | Un código de retorno para el resultado de la ejecución más reciente de una sentencia SQL |
Aviso legal: Esta Guía de Referencia de Db2® 12 para z/OS fue desarrollada para ayudar a los usuarios en sus actividades diarias en la administración y programación en Db2 para z/OS. No son garantías expresadas ni implícitas con el contenido de esta guía. Queremos proporcionar una referencia de calidad y útil para los usuarios. Por favor, notifícanos cualquier error o error en esta guía de referencia en blogs@bmc.com. Db2 están una marca registrada de IBM Corporation.
Guía Db2
- Db2 12 para z/OS: Una introducción
- Funciones escalares en Db2 12
- Cómo leer diagramas sintácticos de IBM<sup>®</sup> para Db2 12
- Elementos del lenguaje en Db2 12
- Funciones agregadas en Db2 12
- Funciones de tabla y fila en Db2 12
- Consultas en Db2 12
- Comandos en Db2 12
- Sentencias de control SQL en Db2 12
- Explica las tablas en Db2 12
- DSNZPARM en Db2 12
- Parámetros de enlace en Db2 12
- Límites de Db2 en Db2 12
- Área de Comunicación SQL (SQLCA) en Db2 12
- REXX SQLCA en Db2 12
- Obtén diagnósticos en Db2 12
- IFCIDS en Db2 12
- Tablas de catálogo en Db2 12
- Excepciones en Db2 12
- Tablas del Repositorio de Esquemas XML en Db2 12
- Estadísticas actualizables del catálogo en Db2 12
- IBM Utilities en Db2 12
- Códigos de retorno positivo SQL en Db2 12
- Códigos de retorno de errores SQL en Db2 12
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.