問題なく実行される MySQL v5.5.8 を実行している実稼働サーバーに関数があります。
MySQL v5.5.9 を実行しているテスト サーバーで同じ関数を作成しようとすると、作成がエラー 1064 で失敗します。一方のサーバーでは問題なく、他方のサーバーでは問題ない理由を誰か説明してもらえますか? なぜ MySQL がこのようなあいまいで役に立たないメッセージを返すのか、私には決してわかりません!!!
作成は次のとおりです。
DELIMITER $$
CREATE FUNCTION `CheckProjType` (type INT, cost BIGINT )
RETURNS VARCHAR(50)
CHARSET latin1
NO SQL
BEGIN
DECLARE rtn VARCHAR(50);
IF type = 5 THEN SET rtn = 'New Maint';
ELSE
IF type = 4 THEN SET rtn = 'Ongoing Maintenance';
ELSE
IF type = 3 THEN SET rtn = 'New Development';
else
IF cost > 1000000000 THEN SET rtn = 'New Expansion';
else
IF cost > 250000000 THEN SET rtn = 'Major Improvement';
ELSE
IF cost > 25000000 THEN SET rtn = 'Major Development';
ELSE
SET rtn = 'Small Improvement';
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
RETURN rtn;
END $$
DELIMITER ;
エラーは次のとおりです。
ERROR 1064: You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near '' at line 6
SQL Statement:
CREATE FUNCTION `CheckProjType` (type INT, cost BIGINT )
RETURNS VARCHAR(50)
CHARSET latin1
NO SQL
BEGIN
DECLARE rtn VARCHAR(50)