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:
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!
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ó,
DELIMITER $$
DROP PROCEDURE IF EXISTS nombre_procedimiento;;
CREATE PROCEDURE nombre_procedimiento()
BEGIN
-- CODE SNIP
END$$
DELIMITER ;
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!
Correcto, vuelve el delimitador a su normalidad para que se ejecuten las consultas que terminan en ;
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.
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