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

取两个参数怎么样,值将取决于第二个参数,例如

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;

但如果您不喜欢这个想法,只需制作两个适合您需求的单独功能。

于 2012-11-16T12:45:04.250 回答
1

您可以 1)将返回类型更改为 varchar 2)返回并连接价格和描述

使用函数 CONCAT(price,',',desc)

于 2012-11-16T12:46:06.167 回答