我已经在MySQL中创建了以下函数,无论我给定参数值的整数如何,它总是给我结果A。
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 $$
感谢您的评价和建议以对其进行修改。
最佳答案
您的函数接受参数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;$$
关于mysql - MySQL函数给出相同的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41839745/