2017-01-24 52 views
0

我在MySQL中創建了以下函數,並且它總是以A的結果給出結果作爲參數值。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,但在函數體中聲明一個與您的參數名稱相同的變量。 嘗試從函數體 刪除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;$$ 
+0

非常感謝。這工作完美。 –

相關問題