このクエリ`
delimiter $$
CREATE DEFINER=`root`@`localhost` FUNCTION `calculatePrice`(cheese VARCHAR(50), meat VARCHAR(50), veg VARCHAR(50)) RETURNS decimal(10,0)
DETERMINISTIC
BEGIN
DECLARE price DECIMAL;
SET price = (SELECT SUM(x.Price)
FROM
(
SELECT `priceFactor` AS Price FROM `tblCheese` WHERE `cheeseName` = cheese
UNION ALL
SELECT `priceFactor` AS Price FROM `tblMeat` WHERE `meatName` = meat
UNION ALL
SELECT `priceFactor` AS Price FROM `tblVeggie` WHERE `veggieName` = veg
) x );
RETURN price;
END$$
`
MySQLコマンドラインクライアントから呼び出された場合は数学的に正しい答えを返しますが、他のプログラムまたはPHPから呼び出された場合は正しくありません(渡されるパラメーターに関係なく、3が返されます)。以下を参照してください。
ぼやけている場合の呼び出しステートメントは、SELECTcalculatePrice('colby'、'sausage'、'black Beans');です。
私はこれまでこの奇妙さを見たことがありません。それはすべてMySQLなどの同じコピーから外れています。
編集して追加:phpMyAdminもクエリに対する正しい答えを生成します。