Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/12/2014, 17:46
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: Procedure y Tablas Temporales

Bueno, por lo pronto, toda esa sintaxis está mal para ser MySQL. Te debería disparar errores de sintaxis o ejecución.
Vamos a ver:
- Los Sp de más de una linea o sentencia deben forzosamente poner su código dentro de un bloque BEGIN/END, cosa que no se cumple en tu ejemplo.
- No terminan en END PROCEDURE, eso es sintaxis de Oracle.
- Toda sentencia debe si o si terminar en un punto y coma (;). de lo contrario generarán errores.
- El controlador de flujo IF requiere THEN. Lo pusiste mal escrito.
- El DROP TABLE sólo funciona si la tabla se crea, y no se vé donde está.
- Las tablas TEMPORARY, si son creadas dentro de un SP no tienen persistencia fuera de él. Es decir, desaparecen en forma automática. Físicamente.
- Si una tabla TEMPORARY se crea fuera del SP, es invisible dentro de él, a menos que la instancia de conexión sea la misma.
- Las tablas MEMORY permanecen fuera de la ejecución, pero los datos que contienen se borran al terminar el SP.

En definitiva, para cumplir aproximadamente con lo que quieres, la sintaxis más cercana podría ser:
Código MySQL:
Ver original
  1.  
  2.  
  3.   CREATE TEMPORARY TABLE tablax0
  4.   AS
  5.   SELECT * FROM tablax WHERE condicion1;
  6.  
  7.   CREATE TEMPORARY TABLE tablaz0
  8.   AS
  9.   SELECT *
  10.   FROM tablax1
  11.   WHERE condicion2 IN (SELECT * FROM  tablax0 WHERE condiocion3);
  12.  
  13.   # Esto no tiene sentido. No se ve de donde se obtiene "valor"
  14.  
  15.   IF (valor >5) THEN
  16.          ...
  17.   END IF;
  18.  
  19. END ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)