Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/07/2011, 09:40
Avatar de RoggerElfo
RoggerElfo
 
Fecha de Ingreso: enero-2008
Ubicación: En la ciudad de los Reyes LIMA !
Mensajes: 121
Antigüedad: 16 años, 3 meses
Puntos: 2
insert con una condicion

Bueno lo que quiero hacer es algo simple pero increiblemente no me sale ...
el primer procedure busca un canal ... y devuelve un valor numerico si encuentra algo
si encuentra algo significa que el registro existe y ya no tengo que ingresarlo nuevamente .... pero sino devuelve nada hago un insert ... la cosa va mas o menos asi ....

proce buscar
Código:
create procedure averias.buscarCanal(in nombre varchar(100), in numeroCanal int, in pais int, out flag1 int, out flag2 int)
BEGIN
select count(canal_idcanal) into flag1 from canalxpais where chid =  numeroCanal and pais_idpais = pais;
select count(idcanal) into flag2 from canal where nom_canal =  nombre;
END
proce grabar
Código:
create procedure averias.grabarCanal(in nombre varchar(100), in genero varchar(45), in numeroCanal int, in tipo int, in mux int, in pais int)
BEGIN
		DECLARE flag INTEGER DEFAULT 0;
		call buscarCanal(pais,nombre);
		set flag = @flag1 + @flag2;
		case flag when 0 then 
				into canal(nom_canal,genero,origen_idorigen,tipo_canal_idtipo_canal,mux_idmux) values ('nombre','genero', null ,1,1,1)
		ELSE
		"canal ya existe"
		END CASE;
END
aca me da un error

Código:
[Err] 1064 - 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 'case flag when 0 then 
				insert into canal(nom_canal,genero,origen_idorigen,t' at line 6
que es justamente donde empieza el case ...
AYUDA PLZ !