¿Cómo le hago para obtener los mensajes de error en Oracle?
1 respuesta
Respuesta de hugogonzalez
1
1
hugogonzalez, Administrador de Bases de Datos Oracle(7
Creo entender que quieres obtener los mensajes y su codugo para Guardarlos en alguna tabla. Para ello, nos basaremos en una funcion("built-in") de oracle: SQLERRM(err_num), el cual devuelve el mensaje de error correspondiente al numero; Un dato importante es que el parámetro "err_num" debe ser negativo! Un ejemplo: -- -- -- Declare err_msg VARCHAR2(100); err_num pls_integer; BEGIN FOR err_num IN 1000..1005 LOOP err_msg := SQLERRM(-1*err_num); if err_msg not like ('%Message%not found%') then dbms_output.put_line(err_msg); end if; END LOOP; END; / -- -- -- La salida del código 1000 al 1005 es : -- -- -- ORA-01000: maximum open cursors exceeded ORA-01001: invalid cursor ORA-01002: fetch out of sequence ORA-01003: no statement parsed ORA-01004: default username feature not supported; logon denied ORA-01005: null password given; logon denied -- -- -- Nota: en el for puedes colocar desde 1... 99999; lo coloque desde 1000... 1005 para ilustrar el ejemplo con la salida. En donde se evalúa "if err_msg..." es para evitar mensajes no registrados por Oracle(Verifícalo), y es allí donde seria conveniente llenar una tabla. En todo caso, recominedo que revises la documentacion: "PL/SQL User's Guide and Reference"; Especificamente el cap. "6 Error Handling". Esta muy bien documentado y el ejemplo utilizado alli es el modelo que siempre recomiendo. Un cordial saludo, _____________________________ Hugo Gonzalez, Cc's Venezuela.
Excelente Respuesta ! Ya he revisado el manual y la variante que le pusiste en la evaluación del "if err_msg..." esta super. No sabia que dentro del PL/Sql permitía el "like...". Gracias.