Obtendo o corpo de uma Stored Procedure no DB2
É comum obtermos erros do DB2 em nossa aplicação JAVA retornando algo do tipo:
Caused by:
com.ibm.db2.jcc.am.oo: DB2 SQL Error: SQLCODE=-407, SQLSTATE=23502, SQLERRMC=TBSPACEID=2, TABLEID=2304, COLNO=6, DRIVER=3.58.82
Em alguns casos, não temos muitos dados sobre a tabela, campo, etc… então é necessário investigar, para isso, algumas queryes podem nos ajudar, segue:
- Para ver o nome da tabela baseado no Table Id:
db2 “SELECT TABNAME FROM SYSCAT.TABLES WHERE TABLEID=2304″
- Para ver o campo ao qual se refere o erro:
SELECT * FROM SYSCAT.COLUMNS WHERE TABNAME=’TVALDCCONDCVARVL’ AND COLNO=6
- E finalmente, se quiser ver o corpo da procedure, num caso no qual não tenha um cliente que possibilite instalado e só tem acesso via command line (para MACHOS):
db2 “select text from syscat.routines where routinename=’PUPDCONDCREGRA’” > PUPDCONDCREGRA.sql
No caso acima, usei o nome PUPDCONDCREGRA, substitua para o nome de sua proc.
Enjoy!
