Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/02/2009, 07:05
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: saber si existe

Tu procedimiento tiene varios errores:

1. Un CURSOR se declara al inicio de todo proceso e inmediatamente después de declarar todas las variables. No se puede declarar dentro de una función.

2. La cláusula IF EXISTS se usa para la sentencia DROP. No es una sentencia de MySQL por si misma, porque EXISTS no es una función sino una cláusula de otra sentencia.

3. Saber si algo ha dado resultado es simple: si no da resultado, devuelve NULL, por lo que la sentencia sería simplemente:
Código sql:
Ver original
  1. IF (SELECT MAX(indice) FROM mov_com WHERE codpro = variablecodigo) IS NULL THEN
  2.     SET  indicem = 1;
  3. ELSE
  4.     SET indicem =  (SELECT MAX(indice) FROM mov_com WHERE codpro = variablecodigo)  + 1;
  5. END IF;

Tip final: No uses un CURSOR para tareas tan elementales, consume muchos recursos del microprocesador inutilmente y no son optimizables. Úsalos solamente para tareas en las que realmente debas procesar un conjunto de registros.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)