PhpMyAdmin & Stored Procedures

Iniciado por Zinc, 19 Octubre 2012, 02:09 AM

0 Miembros y 1 Visitante están viendo este tema.

Zinc

Buenos días a todos,
Tengo un problema, estoy intentando ejecutar un script que crea un stored procedure en mi base de datos MySql 5 en un servidor, pero cuando lo quiero ejecutar me tira un que hay un error de sintaxis. Creo que es algo con el delimitador pero sigo sin poder hacerlo funcionar.
Cualquier ayuda me vendría muy bien.
Adjunto el mencionado store:

Código (sql) [Seleccionar]
delimiter $$

CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `Empresa_Obtener`(in p_comienzo int,
in p_cantidad int,in p_nombre varchar(20))
BEGIN
   if (p_nombre = null or p_nombre = "%") then -- En caso de venir en blanco se obtiene todas
        SELECT *,(SELECT COUNT(*) FROM `usuario` where idEmpresa = e.id and activo = 1) as usuarios,
        (SELECT COUNT(*) FROM equipo where idEmpresa = e.id and activo = 1 ) as equipos,
        (SELECT COUNT(*) FROM persona where idEmpresa = e.id and activo = 1) as personas
        FROM empresa e order by id
        LIMIT p_comienzo,p_cantidad;  -- estos ultimos valores son para el paginador
    else
        SELECT *,(SELECT COUNT(*) FROM usuario where idEmpresa = e.id and activo=1) as usuarios,
       (SELECT COUNT(*) FROM equipo where idEmpresa = e.id and activo=1 ) as equipos,
       (SELECT COUNT(*) FROM persona where idEmpresa = e.id and activo = 1) as personas
       FROM empresa e
       where nombre like p_nombre order by id; -- p_nombre ya viene con el %(comodin) añadido
     end if;
END$$



Gracias.

Saludos!

Shell Root

Es correcto, porque el delimitador que tienes para terminar las consultas es el $$, pero que pasa con el ; que realizas en los SELECT? Intentad, estó,
Código (sql) [Seleccionar]
DELIMITER $$

DROP PROCEDURE IF EXISTS nombre_procedimiento;;
CREATE PROCEDURE nombre_procedimiento()
BEGIN

   -- CODE SNIP

END$$
DELIMITER ;
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Zinc

Hola Shell Root, gracias por contestar.
Lo único que tengo que agregarle es el Drop antes del create y el Delimiter debajo del END?

Saludos!

Shell Root

Correcto, vuelve el delimitador a su normalidad para que se ejecuten las consultas que terminan en ;
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Zinc

Pero no había una inconsistencia si hay 2 delimitadores? Perdoná mi ignorancia, pero desconozco esto.
En phpmyadmin,debajo del cuadro donde iría la consulta hay un textbox que permite especificar un delimitador.
En fin,qué hago?.

Saludos y gracias.

Shell Root

Intentaste hacer lo que te dije? :p

Creeme que tuve el mismo problema y esa fue mi solucíon... o depronto descubrí un bug y jodi phpmyadmin jajjajaja
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.