MySQL函数给出相同的结果

时间:2017-01-24 22:01:07

标签: mysql function

我在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 $$

感谢您的善意审核和修改建议。

1 个答案:

答案 0 :(得分:0)

您的函数接受参数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;$$