gpt4 book ai didi

mysql - 尝试在 Mysql 中创建存储过程时出现语法错误?

转载 作者:行者123 更新时间:2023-11-29 20:27:30 24 4
gpt4 key购买 nike

我正在尝试在 MySQL 中创建存储过程,但是当我尝试时,phpmyadmin 告诉我有语法错误。为什么?我正在寻找问题可能是因为我的 if else 条件中有 CASE 语句,但据我所知,这太疯狂了,我希望你能帮助我并告诉我 Mysql 中的这个存储过程有什么问题。谢谢。

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$$

MYSQL 错误是:

#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

再次非常感谢。

最佳答案

尝试下面的方法,它对我有用

-- --------------------------------------------------------------------------------
-- 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

关于mysql - 尝试在 Mysql 中创建存储过程时出现语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39218356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com