mysql声明变量语法错误

时间:2016-10-03 21:07:16

标签: mysql function

我正在尝试迁移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 =当coden&lt; 50然后&#39; A&#39;当coden&lt; 100 w&#39;在第4行

你能告诉我我哪里错了吗?感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我不确定为什么会有这么多的反引号,但以下语法有效(请注意你的分号):

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 ;