Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/05/2010, 21:47
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: No sé cual es el error, desconozco como se declara

No se entiende bien qué es lo que pretendes hacer con esto:
Cita:
Iniciado por Jona_than Ver Mensaje
Estimados,

Mi problema es en el SET PasoIf = "SELECT MAX(IDHOSPEDAJE) FROM HOSPEDAJE";

¿Como se define de manera correcta esto?

Código MySQL:
Ver original
  1. CREATE PROCEDURE `InsertarInscrito`(IN NombreHospedaje varchar(250),IN TelefonoHospedaje varchar(250),IN IdComuna int,IN NombresInscrito varchar(250),IN ApellidosInscrito varchar(250),IN EdadInscrito int,IN CodAreaInscrito int,IN TelefonoRFInscrito int,IN TelefonoMInscrito varchar(250),IN EmailInscrito varchar(250),IN HospedajeInscrito bool,IN CongregacionInscrito varchar(250),IN NombrePInscrito varchar(250),IN EmailPInscrito varchar(250),IN TelefonoPInscrito varchar(250),IN CoyuLiderInscrito varchar(250),IN EmailCLInscrito varchar(250),IN TelefonoCLInscrito varchar(250))
  2. IF HospedajeInscrito = 1 THEN
  3.  INSERT INTO HOSPEDAJE VALUES (NombreHospedaje,TelefonoHospedaje);
  4.  DECLARE PasoIf varchar(250);
  5.  SET PasoIf = "SELECT MAX(IDHOSPEDAJE) FROM HOSPEDAJE";
  6.  INSERT INTO INSCRITO VALUES (PasoIf,IdComuna,NombresInscrito,ApellidosInscrito,EdadInscrito,CodAreaInscrito,TelefonoRFInscrito,TelefonoMInscrito,EmailInscrito,HospedajeInscrito,CongregacionInscrito,NombrePInscrito,EmailPInscrito,TelefonoPInscrito,CoyuLiderInscrito,EmailCLInscrito,TelefonoCLInscrito);
  7.  DECLARE PasoIFDos varchar(250);
  8.  SET PasoIfDos = "SELECT MAX(IDINSCRITO) FROM INSCRITO";
  9.  INSERT INTO PENDIENTE VALUES (PasoIfDos);
  10.  INSERT INTO INSCRITO VALUES (IdComuna,NombresInscrito,ApellidosInscrito,EdadInscrito,CodAreaInscrito,TelefonoRFInscrito,TelefonoMInscrito,EmailInscrito,HospedajeInscrito,CongregacionInscrito,NombrePInscrito,EmailPInscrito,TelefonoPInscrito,CoyuLiderInscrito,EmailCLInscrito,TelefonoCLInscrito);
  11.  DECLARE PasoElse varchar(250);
  12.  SET PasoElse = "SELECT MAX(IDINSCRITO) FROM INSCRITO";
  13.  INSERT INTO PENDIENTE VALUES (PasoElse);

Saludos.
Vamos por partes:
1) Las comillas (") se usan para encerrar las denominaciones de campos, tablas, bases, procedimientos, triggers, funciones, y cualquier objeto de la base de datos, de la misma forma que el acento grave (`). No te sirve en este contexto y te generará un error de sintaxis, porque no hay ninguna columna denominada "SELECT MAX(IDINSCRITO) FROM INSCRITO".
2) No se comprende lo que quieres hacer al ejecutar
Código MySQL:
Ver original
  1. SET PasoIf = "SELECT MAX(IDHOSPEDAJE) FROM HOSPEDAJE";
más allá de que te dará un error de sintaxis, como ya te dije, ni para qué parece que lo quisieras guardar en la misma tabla.
3) No se entiende por qué tienes tres tablas para definir diferentes estados de un registro, cuando eso se puede controlar con un sólo campo, ni cómo evitaras los problemas de consistencia de datos en el futuro, al tener registros idénticos repartidos en esas tablas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)