Área de Comunicación SQL (SQLCA) en Db2 12

Área de Comunicación SQL (SQLCA) en Db2 12

  • Mainframe
6 min de lectura Actualizado Apr 1, 2019

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.

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de Mainframe

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.