lunes, 19 de diciembre de 2011

Identificación de Excepciones SQL

Cuando el log del servidor de aplicaciones lanza un error de este tipo:


... Caused by: com.ibm.db2.jcc.a.SqlException: DB2 SQL error: SQLCODE: -407, SQLSTATE: 23502, SQLERRMC: TBSPACEID=3, TABLEID=27, COLNO=2

nos gustaría saber a qué tabla y columna específica se refiere este error. Existen dos tablas que contienen esta información:

SYSCAT.TABLES y SYSCAT.COLUMNS

Para el ejemplo anterior, las sentencias que nos entregan la información deseada son:

SELECT TABNAME FROM SYSCAT.TABLES WHERE TABLEID=27 AND TBSPACEID=3;

y luego:

SELECT * FROM SYSCAT.COLUMNS WHERE COLNO = 2 AND TABNAME = [TABNAME];

donde [TABNAME] es el nombre de la tabla, que dio resultado la primera consulta.