2016-08-30 2 views
0

Ich versuche eine gespeicherte Prozedur in MySQL zu erstellen, aber wenn ich es versuche, sagt mir phpmyadmin, dass ich einen Syntaxfehler habe. Warum? Ich habe gesucht, dass das Problem könnte sein, weil ich CASE-Anweisungen innerhalb meiner sonst Bedingungen, aber soweit ich weiß, dies ist so verrückt und ich hoffe, Sie können mir helfen und mir sagen, was ist mein Problem mit dieser Stored Procedure in Mysql . Vielen Dank.Syntaxfehler versucht, eine gespeicherte Prozedur in Mysql zu erstellen?

DELIMITER $$ 

CREATE PROCEDURE extraer_fechas(
    statusFecha SMALLINT(5), 
    string_busqueda VARCHAR(50) 
) 
BEGIN 

IF string_busqueda = "false" THEN 
    SELECT 
     CONCAT(fechas.year,'-',fechas.month,'-',fechas.dates) AS fecha_php, 
     fechas.ID, 
     fechas.dates, 
     fechas.month, 
     fechas.year, 
     paises.nombre AS city, 
     fechas.region, 
     fechas.place, 
     fechas.tickets, 
     fechas.directions, 
     fechas.flyer, 
     seo_sitemap.title, 
     seo_sitemap.description, 
     seo_sitemap.url, 
     seo_sitemap.array_tags 
      FROM fechas 
       INNER JOIN paises ON fechas.city = paises.id_pais 
       INNER JOIN seo_sitemap ON seo_sitemap.id_articulo = fechas.ID 
      WHERE seo_sitemap.id_tabla = 1 
      AND fechas.status_fecha = statusFecha 
     ORDER BY 
     fechas.month, 
     fechas.dates, 
     fechas.year 

ELSE 
    SELECT 
     CONCAT(fechas.year,'-',fechas.month,'-',fechas.dates) AS fecha_php, 
     fechas.ID, 
     fechas.dates, 
     fechas.month, 
     fechas.year, 
     paises.nombre AS city, 
     fechas.region, 
     fechas.place, 
     fechas.tickets, 
     fechas.directions, 
     fechas.flyer, 
     seo_sitemap.title, 
     seo_sitemap.description, 
     seo_sitemap.url, 
     seo_sitemap.array_tags    
      FROM fechas 
       INNER JOIN paises ON fechas.city = paises.id_pais 
       INNER JOIN seo_sitemap ON seo_sitemap.id_articulo = fechas.ID 
     WHERE 
      CONCAT(fechas.place,' ',fechas.region,', ',paises.nombre,', ',( 
      CASE fechas.month 
       WHEN 01 THEN 'Enero' 
       WHEN 02 THEN 'Febrero' 
       WHEN 03 THEN 'Marzo' 
       WHEN 04 THEN 'Abril' 
       WHEN 05 THEN 'Mayo' 
       WHEN 06 THEN 'Junio' 
       WHEN 07 THEN 'Julio' 
       WHEN 08 THEN 'Agosto' 
       WHEN 09 THEN 'Septiembre' 
       WHEN 10 THEN 'Octubre' 
       WHEN 11 THEN 'Noviembre' 
       WHEN 12 THEN 'Diciembre' 
      END),' ',fechas.dates,' de ',fechas.year) 
     LIKE '%string_busqueda%' 
     AND seo_sitemap.id_tabla = 1 
     AND fechas.status_fecha = statusFecha ; 
END IF; 

END$$ 

Und die MYSQL ERROR:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ELSE SELECT CONCAT(fechas.year,'-',fechas.month,'-',fechas.dates) AS fecha' at line 34 

Nochmals vielen Dank viel.

+1

den Fehlercode und die Nachricht Bitte schreiben. – KaeL

+0

Entschuldigung. Ist das # 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, für die richtige Syntax in der Nähe von 'ELSE SELECT CONCAT (fechas.year,' - ', fechas.month,' - ', fechas.dates) AS fecha' in Zeile 34 'Danke –

Antwort

0

ich denke, dass Sie nicht Begrenzer verwenden können

Warum brauchen Sie Delimiter ??

ich versuche, diesen Code und arbeiten gut

CREATE PROCEDURE extraer_fechas(
    statusFecha SMALLINT(5), 
    string_busqueda VARCHAR(50) 
) 
BEGIN 

IF string_busqueda = "false" THEN 
    SELECT 
     CONCAT(fechas.year,'-',fechas.month,'-',fechas.dates) AS fecha_php, 
     fechas.ID, 
     fechas.dates, 
     fechas.month, 
     fechas.year, 
     paises.nombre AS city, 
     fechas.region, 
     fechas.place, 
     fechas.tickets, 
     fechas.directions, 
     fechas.flyer, 
     seo_sitemap.title, 
     seo_sitemap.description, 
     seo_sitemap.url, 
     seo_sitemap.array_tags 
      FROM fechas 
       INNER JOIN paises ON fechas.city = paises.id_pais 
       INNER JOIN seo_sitemap ON seo_sitemap.id_articulo = fechas.ID 
      WHERE seo_sitemap.id_tabla = 1 
      AND fechas.status_fecha = statusFecha 
     ORDER BY 
     fechas.month, 
     fechas.dates, 
     fechas.year 

;ELSE 
    SELECT 
     CONCAT(fechas.year,'-',fechas.month,'-',fechas.dates) AS fecha_php, 
     fechas.ID, 
     fechas.dates, 
     fechas.month, 
     fechas.year, 
     paises.nombre AS city, 
     fechas.region, 
     fechas.place, 
     fechas.tickets, 
     fechas.directions, 
     fechas.flyer, 
     seo_sitemap.title, 
     seo_sitemap.description, 
     seo_sitemap.url, 
     seo_sitemap.array_tags    
      FROM fechas 
       INNER JOIN paises ON fechas.city = paises.id_pais 
       INNER JOIN seo_sitemap ON seo_sitemap.id_articulo = fechas.ID 
     WHERE 
      CONCAT(fechas.place,' ',fechas.region,', ',paises.nombre,', ',( 
      CASE fechas.month 
       WHEN 01 THEN 'Enero' 
       WHEN 02 THEN 'Febrero' 
       WHEN 03 THEN 'Marzo' 
       WHEN 04 THEN 'Abril' 
       WHEN 05 THEN 'Mayo' 
       WHEN 06 THEN 'Junio' 
       WHEN 07 THEN 'Julio' 
       WHEN 08 THEN 'Agosto' 
       WHEN 09 THEN 'Septiembre' 
       WHEN 10 THEN 'Octubre' 
       WHEN 11 THEN 'Noviembre' 
       WHEN 12 THEN 'Diciembre' 
      END),' ',fechas.dates,' de ',fechas.year) 
     LIKE '%string_busqueda%' 
     AND seo_sitemap.id_tabla = 1 
     AND fechas.status_fecha = statusFecha 
;END IF 

;end 
+0

Hallo und danke, aber noch nicht funktioniert. '# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, für die richtige Syntax in der Nähe von 'ELSE SELECT CONCAT (fechas.year,' - ', fechas.month,' - ', fechas.dates) AS fecha' in Zeile 34 ' –

0

Versuchen darunter Arbeiten ist für mich

-- -------------------------------------------------------------------------------- 
-- Routine DDL 
-- Note: comments before and after the routine body will not be stored by the server 
-- -------------------------------------------------------------------------------- 
DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` PROCEDURE `extraer_fechas`(
    statusFecha SMALLINT(5), 
    string_busqueda VARCHAR(50) 
) 
BEGIN 

IF string_busqueda = "false" THEN 
    SELECT 
     CONCAT(fechas.year,'-',fechas.month,'-',fechas.dates) AS fecha_php, 
     fechas.ID, 
     fechas.dates, 
     fechas.month, 
     fechas.year, 
     paises.nombre AS city, 
     fechas.region, 
     fechas.place, 
     fechas.tickets, 
     fechas.directions, 
     fechas.flyer, 
     seo_sitemap.title, 
     seo_sitemap.description, 
     seo_sitemap.url, 
     seo_sitemap.array_tags 
      FROM fechas 
       INNER JOIN paises ON fechas.city = paises.id_pais 
       INNER JOIN seo_sitemap ON seo_sitemap.id_articulo = fechas.ID 
      WHERE seo_sitemap.id_tabla = 1 
      AND fechas.status_fecha = statusFecha 
     ORDER BY 
     fechas.month, 
     fechas.dates, 
     fechas.year; 
ELSE 
    SELECT 
     CONCAT(fechas.year,'-',fechas.month,'-',fechas.dates) AS fecha_php, 
     fechas.ID, 
     fechas.dates, 
     fechas.month, 
     fechas.year, 
     paises.nombre AS city, 
     fechas.region, 
     fechas.place, 
     fechas.tickets, 
     fechas.directions, 
     fechas.flyer, 
     seo_sitemap.title, 
     seo_sitemap.description, 
     seo_sitemap.url, 
     seo_sitemap.array_tags    
      FROM fechas 
       INNER JOIN paises ON fechas.city = paises.id_pais 
       INNER JOIN seo_sitemap ON seo_sitemap.id_articulo = fechas.ID 
     WHERE 
      CONCAT(fechas.place,' ',fechas.region,', ',paises.nombre,', ',( 
      CASE fechas.month 
       WHEN 01 THEN 'Enero' 
       WHEN 02 THEN 'Febrero' 
       WHEN 03 THEN 'Marzo' 
       WHEN 04 THEN 'Abril' 
       WHEN 05 THEN 'Mayo' 
       WHEN 06 THEN 'Junio' 
       WHEN 07 THEN 'Julio' 
       WHEN 08 THEN 'Agosto' 
       WHEN 09 THEN 'Septiembre' 
       WHEN 10 THEN 'Octubre' 
       WHEN 11 THEN 'Noviembre' 
       WHEN 12 THEN 'Diciembre' 
      END),' ',fechas.dates,' de ',fechas.year) 
     LIKE '%string_busqueda%' 
     AND seo_sitemap.id_tabla = 1 
     AND fechas.status_fecha = statusFecha ; 
END IF; 
END 
Verwandte Themen