Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/07/2011, 05:15
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Control Excepciones en MYSQL

Cita:
- Donde puedo conseguir un listado de los errores SQLSTATE.
En el Manual de Referencia (todo DBMS que se respete tiene uno):MySQL 5.0 Reference Manual :: 26 Manejo de errores en MySQL
Cita:
- En MYSQL existen las variables de ORACLE (SQLERROR,SQLERRM)?
MySQL no es Oracle, ni fue desarrollado por Oracle. Oracle lo compró cuando adquirió Sun, así que no, no existen. MySQL tiene sus propias variables y modos de acceder a ellas.
Búscalas en el índice, porque hay de diferentes niveles.: (letra V)
Cita:
- Si en vez de SQLSTATE utilizo SQLEXCEPTION, me hará lo que le diga cuando dé cualquier error?. Puedo trabajar con SQLSTATE dentro del procedimiento?
Personalmente prefiero trabajar con SQLSTATE, y si, se usan dentro de los SP y sólo dentro de ellos.
Cita:
- Supongo que en el HANDLER se puede escribir más de una linea.
No supongas. Cada HANDLER maneja un único SQL STATE y sólo puede hacer una única tarea. Se supone que se pueden definir diferentes HABLDERs para diferentes SQLSTATEs, pero no lo he probado ni he tenido la necesidad de hacerlo (por simpleza de código, tampoco lo veo necesario).
Cita:
Quiero controlar que si dá cualquier error me vaya a otro procedimiento que me
rellena un log, me gustaria saber si me dá un error durante el insert se pueda
mantener en el segundo procedimiento, o habría que pasarselo por parámetro a
este segundo procedimiento.
Habría que ver qué es lo que quieres pasar como parámetro, pero para el caso, mientras el segundo procedimiento no haga llamadas a la tabla usada por el primero, o dispare TRIGGER que la afecten, no debería haber problemas. SI la idea es mantener los datos para una posterior verificación, eso es variable, pero yo impementaría una tabla TEMPORARY para mantener esos registros sin ingresar y que el SP los devuelva al final de su ejecución.
Ten en cuenta que si inicias una transacción en un SP, otro SP llamado desde él no puede, a su vez, iniciar otra transacción, porque MySQL no soporta transacciones anidadas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)