0

価格を計算する MySQL 関数を作成しました。

CREATE DEFINER=`[USER]`@`[HOST]` FUNCTION `calculatePrice`(id INT) 
RETURNS DECIMAL(8,2) DETERMINISTIC
BEGIN
    IF id=10 THEN 
        RETURN 899;
    ELSE
        RETURN 710;
    END IF;
END

これは本来の動作ですが、価格の横に、価格の理由を含む文字列を追加したいと考えています。

その関数は次のように使用する必要があります。

SELECT id, calculatePrice(id).price AS price, calculatePrice(id).reason AS reason FROM person;

これは MySQL で可能で、どのように機能しますか?

ありがとう!

4

2 に答える 2

1

2つのパラメーターを取得するのはどうでしょうか。値は、2番目のパラメーター(例)によって異なります。

CREATE DEFINER=`[USER]`@`[HOST]` FUNCTION `calculatePrice`(id INT, isPrice INT) 
RETURNS DECIMAL(8,2) DETERMINISTIC
BEGIN
    IF isPrice = 1 THEN -- for price
        IF id = 10 THEN 
            RETURN 899;
        ELSE
            RETURN 710;
        END IF;
    ELSE                -- for reason
        IF id = 10 THEN 
            RETURN 100;
        ELSE
            RETURN 200;
        END IF;
    END IF
END

そしてそれを次のように呼びます

SELECT  id, 
        calculatePrice(id, 1) AS price, 
        calculatePrice(id, 0).reason AS reason 
FROM person;

ただし、アイデアが気に入らない場合は、ニーズに合った2つの別個の関数を作成してください。

于 2012-11-16T12:45:04.250 に答える
1

1)返品タイプをvarcharに変更します。2)価格と説明を連結して返品します。

関数CONCAT(price、'、'、desc)を使用する

于 2012-11-16T12:46:06.167 に答える