gpt4 book ai didi

mysql - 这个 SQL 函数有什么问题

转载 作者:行者123 更新时间:2023-11-29 13:03:05 25 4
gpt4 key购买 nike

我正在尝试使用论坛中用户发布的此功能:http://pastebin.com/Jf9CkQ5f

该帖子已过时,我无法联系到原作者。

我将脚本放在 Mysql 客户端上,但是当我单击“运行查询”时,出现此错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4: 

但是在第 4 行我只有一个声明,有人可以帮助我吗?

更新:这是来源

Create FUNCTION letras(Numero NUMERIC(20,2),  XMoneda VARCHAR(100)) RETURNS VARCHAR(512) 
DETERMINISTIC
BEGIN
DECLARE XlnEntero int;
DECLARE XlcRetorno VARCHAR(512);
DECLARE XlnTerna INT;
DECLARE XlcMiles VARCHAR(512);
DECLARE XlcCadena VARCHAR(512);
DECLARE XlnUnidades INT;
DECLARE XlnDecenas INT;
DECLARE XlnCentenas INT;
DECLARE XlnFraccion INT;
DECLARE Xresultado varchar(512);

SET XlnEntero = FLOOR(XNumero);
SET XlnFraccion = (XNumero - XlnEntero) * 100;
SET XlcRetorno = '';
SET XlnTerna = 1 ;
WHILE( XlnEntero > 0) DO

#Recorro terna por terna
SET XlcCadena = '';
SET XlnUnidades = XlnEntero MOD 10;
SET XlnEntero = FLOOR(XlnEntero/10);
SET XlnDecenas = XlnEntero MOD 10;
SET XlnEntero = FLOOR(XlnEntero/10);
SET XlnCentenas = XlnEntero MOD 10;
SET XlnEntero = FLOOR(XlnEntero/10);

#Analizo las unidades
SET XlcCadena =
CASE # UNIDADES
WHEN XlnUnidades = 1 AND XlnTerna = 1 THEN CONCAT('UNO ', XlcCadena)
WHEN XlnUnidades = 1 AND XlnTerna <> 1 THEN CONCAT('UN ', XlcCadena)
WHEN XlnUnidades = 2 THEN CONCAT('DOS ', XlcCadena)
WHEN XlnUnidades = 3 THEN CONCAT('TRES ', XlcCadena)
WHEN XlnUnidades = 4 THEN CONCAT('CUATRO ', XlcCadena)
WHEN XlnUnidades = 5 THEN CONCAT('CINCO ', XlcCadena)
WHEN XlnUnidades = 6 THEN CONCAT('SEIS ', XlcCadena)
WHEN XlnUnidades = 7 THEN CONCAT('SIETE ', XlcCadena)
WHEN XlnUnidades = 8 THEN CONCAT('OCHO ', XlcCadena)
WHEN XlnUnidades = 9 THEN CONCAT('NUEVE ', XlcCadena)
ELSE XlcCadena
END; #UNIDADES

#Analizo las decenas
SET XlcCadena =
CASE #DECENAS
WHEN XlnDecenas = 1 THEN
CASE XlnUnidades
WHEN 0 THEN 'DIEZ '
WHEN 1 THEN 'ONCE '
WHEN 2 THEN 'DOCE '
WHEN 3 THEN 'TRECE '
WHEN 4 THEN 'CATORCE '
WHEN 5 THEN 'QUINCE'
ELSE CONCAT('DIECI', XlcCadena)
END
WHEN XlnDecenas = 2 AND XlnUnidades = 0 THEN CONCAT('VEINTE ', XlcCadena)
WHEN XlnDecenas = 2 AND XlnUnidades <> 0 THEN CONCAT('VEINTI', XlcCadena)
WHEN XlnDecenas = 3 AND XlnUnidades = 0 THEN CONCAT('TREINTA ', XlcCadena)
WHEN XlnDecenas = 3 AND XlnUnidades <> 0 THEN CONCAT('TREINTA Y ', XlcCadena)
WHEN XlnDecenas = 4 AND XlnUnidades = 0 THEN CONCAT('CUARENTA ', XlcCadena)
WHEN XlnDecenas = 4 AND XlnUnidades <> 0 THEN CONCAT('CUARENTA Y ', XlcCadena)
WHEN XlnDecenas = 5 AND XlnUnidades = 0 THEN CONCAT('CINCUENTA ', XlcCadena)
WHEN XlnDecenas = 5 AND XlnUnidades <> 0 THEN CONCAT('CINCUENTA Y ', XlcCadena)
WHEN XlnDecenas = 6 AND XlnUnidades = 0 THEN CONCAT('SESENTA ', XlcCadena)
WHEN XlnDecenas = 6 AND XlnUnidades <> 0 THEN CONCAT('SESENTA Y ', XlcCadena)
WHEN XlnDecenas = 7 AND XlnUnidades = 0 THEN CONCAT('SETENTA ', XlcCadena)
WHEN XlnDecenas = 7 AND XlnUnidades <> 0 THEN CONCAT('SETENTA Y ', XlcCadena)
WHEN XlnDecenas = 8 AND XlnUnidades = 0 THEN CONCAT('OCHENTA ', XlcCadena)
WHEN XlnDecenas = 8 AND XlnUnidades <> 0 THEN CONCAT('OCHENTA Y ', XlcCadena)
WHEN XlnDecenas = 9 AND XlnUnidades = 0 THEN CONCAT('NOVENTA ', XlcCadena)
WHEN XlnDecenas = 9 AND XlnUnidades <> 0 THEN CONCAT('NOVENTA Y ', XlcCadena)
ELSE XlcCadena
END; #DECENAS

# Analizo las centenas
SET XlcCadena =
CASE # CENTENAS
WHEN XlnCentenas = 1 AND XlnUnidades = 0 AND XlnDecenas = 0 THEN CONCAT('CIEN ', XlcCadena)
WHEN XlnCentenas = 1 AND NOT(XlnUnidades = 0 AND XlnDecenas = 0) THEN CONCAT('CIENTO ', XlcCadena)
WHEN XlnCentenas = 2 THEN CONCAT('DOSCIENTOS ', XlcCadena)
WHEN XlnCentenas = 3 THEN CONCAT('TRESCIENTOS ', XlcCadena)
WHEN XlnCentenas = 4 THEN CONCAT('CUATROCIENTOS ', XlcCadena)
WHEN XlnCentenas = 5 THEN CONCAT('QUINIENTOS ', XlcCadena)
WHEN XlnCentenas = 6 THEN CONCAT('SEISCIENTOS ', XlcCadena)
WHEN XlnCentenas = 7 THEN CONCAT('SETECIENTOS ', XlcCadena)
WHEN XlnCentenas = 8 THEN CONCAT('OCHOCIENTOS ', XlcCadena)
WHEN XlnCentenas = 9 THEN CONCAT('NOVECIENTOS ', XlcCadena)
ELSE XlcCadena
END; #CENTENAS

# Analizo la terna
SET XlcCadena =
CASE # TERNA
WHEN XlnTerna = 1 THEN XlcCadena
WHEN XlnTerna = 2 AND (XlnUnidades + XlnDecenas + XlnCentenas <> 0) THEN CONCAT(XlcCadena, 'MIL ')
WHEN XlnTerna = 3 AND (XlnUnidades + XlnDecenas + XlnCentenas <> 0) AND XlnUnidades = 1 AND XlnDecenas = 0 AND XlnCentenas = 0 THEN CONCAT(XlcCadena, 'MILLON ')
WHEN XlnTerna = 3 AND (XlnUnidades + XlnDecenas + XlnCentenas <> 0) AND NOT (XlnUnidades = 1 AND XlnDecenas = 0 AND XlnCentenas = 0) THEN CONCAT(XlcCadena, 'MILLONES ')
WHEN XlnTerna = 4 AND (XlnUnidades + XlnDecenas + XlnCentenas <> 0) THEN CONCAT(XlcCadena, 'MIL MILLONES ')
ELSE ''
END; #TERNA

#Armo el retorno terna a terna
SET XlcRetorno = CONCAT(XlcCadena, XlcRetorno);
SET XlnTerna = XlnTerna + 1;
END WHILE; # WHILE

IF XlnTerna = 1 THEN SET XlcRetorno = 'CERO'; END IF;

SET Xresultado = CONCAT(RTRIM(XlcRetorno), ' CON ', LTRIM(XlnFraccion), '/100 ', XMoneda);

RETURN Xresultado;

END

最佳答案

您尚未使用DELIMITER来指示引擎忽略默认语句终止符分号;

创建任何存储过程时,您必须使用自定义DELIMITER

Delimiter //

create function

-- include your function body here

end;
//

delimiter ;

关于mysql - 这个 SQL 函数有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23073982/

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