Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Zinc en 19 Octubre 2012, 02:09 am



Título: PhpMyAdmin & Stored Procedures
Publicado por: Zinc en 19 Octubre 2012, 02:09 am
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
  1. delimiter $$
  2.  
  3. CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `Empresa_Obtener`(IN p_comienzo INT,
  4. IN p_cantidad INT,IN p_nombre VARCHAR(20))
  5. BEGIN
  6.   IF (p_nombre = NULL OR p_nombre = "%") THEN -- En caso de venir en blanco se obtiene todas
  7.        SELECT *,(SELECT COUNT(*) FROM `usuario` WHERE idEmpresa = e.id AND activo = 1) AS usuarios,
  8.        (SELECT COUNT(*) FROM equipo WHERE idEmpresa = e.id AND activo = 1 ) AS equipos,
  9.        (SELECT COUNT(*) FROM persona WHERE idEmpresa = e.id AND activo = 1) AS personas
  10.        FROM empresa e ORDER BY id
  11.        LIMIT p_comienzo,p_cantidad;  -- estos ultimos valores son para el paginador
  12.    ELSE
  13.        SELECT *,(SELECT COUNT(*) FROM usuario WHERE idEmpresa = e.id AND activo=1) AS usuarios,
  14.       (SELECT COUNT(*) FROM equipo WHERE idEmpresa = e.id AND activo=1 ) AS equipos,
  15.       (SELECT COUNT(*) FROM persona WHERE idEmpresa = e.id AND activo = 1) AS personas
  16.       FROM empresa e
  17.       WHERE nombre LIKE p_nombre ORDER BY id; -- p_nombre ya viene con el %(comodin) añadido
  18.     END IF;
  19. END$$
  20.  


Gracias.

Saludos!


Título: Re: PhpMyAdmin & Stored Procedures
Publicado por: Shell Root en 19 Octubre 2012, 04:07 am
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
  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS nombre_procedimiento;;
  4. CREATE PROCEDURE nombre_procedimiento()
  5. BEGIN
  6.  
  7.   -- CODE SNIP
  8.  
  9. END$$
  10. DELIMITER ;


Título: Re: PhpMyAdmin & Stored Procedures
Publicado por: Zinc en 19 Octubre 2012, 04:19 am
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!


Título: Re: PhpMyAdmin & Stored Procedures
Publicado por: Shell Root en 19 Octubre 2012, 19:29 pm
Correcto, vuelve el delimitador a su normalidad para que se ejecuten las consultas que terminan en ;


Título: Re: PhpMyAdmin & Stored Procedures
Publicado por: Zinc en 23 Octubre 2012, 00:27 am
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.


Título: Re: PhpMyAdmin & Stored Procedures
Publicado por: Shell Root en 26 Octubre 2012, 16:53 pm
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