给出相同结果的MySQL函数
我在MySQL中创建了以下函数,它总是以一个整数的形式给出结果,不管我给出的整数是什么,作为参数值给出相同结果的MySQL函数,mysql,function,Mysql,Function,我在MySQL中创建了以下函数,它总是以一个整数的形式给出结果,不管我给出的整数是什么,作为参数值 DELIMITER $$ DROP FUNCTION IF EXISTS ISICN4A; CREATE FUNCTION cdn(coden INT) RETURNS CHAR READS SQL DATA DETERMINISTIC BEGIN DECLARE coden INT UNSIGNED DEFAULT 0; DECLARE ret CHAR; SET ret=CA
DELIMITER $$
DROP FUNCTION IF EXISTS ISICN4A;
CREATE FUNCTION cdn(coden INT)
RETURNS CHAR
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE coden INT UNSIGNED DEFAULT 0;
DECLARE ret CHAR;
SET ret=CASE WHEN coden<=50 then 'A'
when coden BETWEEN 51 AND 100 then 'B'
when coden BETWEEN 101 AND 350 then 'C'
when coden BETWEEN 351 AND 355 then 'D'
when coden>355 then 'E'
ELSE NULL
END;
RETURN ret;
END;$$
DELIMITER $$
分隔符$$
如果存在ISICN4A,则具有下降功能;
创建函数cdn(代码INT)
返回字符
读取SQL数据
确定性
开始
声明coden INT无符号默认值0;
声明ret CHAR;
设置ret=代码N355时的情况,然后设置“E”
否则无效
结束;
返回ret;
结束$$
分隔符$$
感谢您的评论和修改建议 函数接受一个参数
coden INT
,但在函数体中声明一个与参数同名的变量。
尝试删除DECLARE coden INT UNSIGNED DEFAULT 0代码>来自函数体
因此,您的函数将如下所示:
DELIMITER $$
DROP FUNCTION IF EXISTS ISICN4A;
CREATE FUNCTION cdn(coden INT) RETURNS CHAR
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE ret CHAR;
SET ret=CASE WHEN coden<=50 THEN 'A'
WHEN coden BETWEEN 51 AND 100 THEN 'B'
WHEN coden BETWEEN 101 AND 350 THEN 'C'
WHEN coden BETWEEN 351 AND 355 THEN 'D'
WHEN coden>355 THEN 'E'
ELSE NULL
END;
RETURN ret;
END;$$
分隔符$$
如果存在ISICN4A,则具有下降功能;
创建函数cdn(coden INT)返回字符
读取SQL数据
确定性
开始
声明ret CHAR;
设置ret=代码N355时的情况,然后设置“E”
否则无效
结束;
返回ret;
结束$$