2017-01-24 1 views
0

나는 MySQL에서 다음 함수를 만들었고, 매개 변수 값으로 주어진 정수가 무엇이든간에 항상 결과를 제공한다.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=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 $$ 

친절한 리뷰와 제안을 수정하여 사용해보세요.

답변

0

함수는 매개 변수 coden INT을 허용하지만 함수 본문에서는 매개 변수와 같은 이름의 변수를 선언합니다.

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;$$ 
+0

고마워 : 함수가 모양을 그래서 당신의 함수 본문 에서 DECLARE coden INT UNSIGNED DEFAULT 0;을 제거하려고합니다. 이것은 완벽하게 작동합니다. –

관련 문제