Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

excepciones en los procedures ?

Estas en el tema de excepciones en los procedures ? en el foro de Mysql en Foros del Web. En otras BD dentro del procedure si ocurre algún error existe la opción de poner la excepción. En ese caso iría directamente a la excepción ...
  #1 (permalink)  
Antiguo 18/09/2009, 05:08
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
excepciones en los procedures ?


En otras BD dentro del procedure si ocurre algún error existe la opción de poner la excepción. En ese caso iría directamente a la excepción y devolveriamos lo que escribiesemos !! Esa misma opción existe en Mysql ?
Gracias.
  #2 (permalink)  
Antiguo 18/09/2009, 05:36
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: excepciones en los procedures ?

He intentado introducir dentro del begin-end del procedure

SET @flag=0;
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @flag = 1;

pero me dice que no le gusta:

Script line: 2 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @flag = 1;

IF (F='F' at line 6 //Esta fila es la siguiente del procedure.

Alguna idea ?
  #3 (permalink)  
Antiguo 18/09/2009, 05:38
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: excepciones en los procedures ?

Las declaraciones de HANDLER deben ser las últimas definiciones antes de cualquier sentencia SQL que realice una operación, es decír, debe estar al final de todos los DECLARE y antes de cualquier SET, sentencia DML, DDL o lo que sea.
Esto esta bien:
Código sql:
Ver original
  1. DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @flag = 1;
  2. SET @flag=0;
Esto también:
Código SQL:
Ver original
  1. DECLARE flag INT DEFAULT 0;
  2. DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET flag = 1;

Esto NO:
Código sql:
Ver original
  1. DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET flag = 1;
  2. DECLARE flag INT DEFAULT 0;

Esto tampoco:
Código sql:
Ver original
  1. SET @flag=0;
  2. DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @flag = 1;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 18/09/2009, 05:43
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: excepciones en los procedures ?

y por lo tanto donde pongo el SET @flag=0; ?
  #5 (permalink)  
Antiguo 18/09/2009, 05:44
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: excepciones en los procedures ?

gracias una vez más.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:38.