mysql声明变量语法错误
问题描述:
我正在尝试将MS SQL的标量值函数迁移到MySQL中并且已经使用以下语法作为查询来创建名为xx4的函数。mysql声明变量语法错误
DROP FUNCTION IF EXISTS `xx4`;`
CREATE DEFINER = CURRENT_USER FUNCTION `xx4`(code VARCHAR(3))`
RETURNS CHAR`
BEGIN
`DECLARE coden INT UNSIGNED DEFAULT 0= CAST(CODE AS UNSIGNED)`
`DECLARE ret CHAR =CASE`
`when coden<50 then 'A'`
`when coden<100 then 'B'`
`when coden<350 then 'C'`
`when coden<360 then 'D'`
`else null`
`END`
`RETURN ret`
`END;
它给我的错误是:
在申报RET焦炭=情况下,当密码子< 50则 'A' 当密码子<100瓦特”第4行
你能请告诉我我错在哪里?感谢你的帮助。
答
我不知道为什么有这么多的反引号,但下面的语法著作(介意你的分号):
DROP FUNCTION IF EXISTS xx4;
DELIMITER $$
CREATE DEFINER = CURRENT_USER FUNCTION xx4(`code` VARCHAR(3))
RETURNS CHAR
BEGIN
DECLARE coden INT UNSIGNED DEFAULT 0 = CAST(`CODE` AS UNSIGNED);
DECLARE ret CHAR;
set ret = CASE
when coden<50 then 'A'
when coden<100 then 'B'
when coden<350 then 'C'
when coden<360 then 'D'
else null
END;
RETURN ret;
END;$$
DELIMITER ;
我觉得需要进一步修改的语法出现与'太多的象征。 –
'default 0 ='?那应该是什么?试图将'coden'设置为'0 = cast(...)'的布尔结果?默认值不能是表达式。 –