mysql声明变量语法错误

标签 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=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/

相关文章:

php - 将数据库放在一台主机上,将 PHP 文件放在另一台主机上

mysql - 为什么第一次执行没有查询缓存的 mysql 查询比以后执行需要更长的时间?

检查一个数组并返回一个 boolean 值

python - 如何获取将结果保存到数据框的函数

node.js - 模块导出功能

php - Ajax 调用加载好友并在个人资料页面上显示

php - 贝叶斯评分设置

php - 子查询顺序

function - 将 (Maybe a, b) 转换为 Maybe (a,b)

c - C 中函数调用指针的问题