我正在尝试将 MS SQL 的标量值函数迁移到 MySQL 中,并且一直使用以下语法作为查询来创建名为 xx4 的函数。
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;
它给我的错误是:
at Declare ret char=Case when coden<50 then 'A' when coden<100 w' at line 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 ;
关于mysql声明变量语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840434/