MySQL用户定义函数存储查询结果

时间:2014-02-24 06:57:59

标签: mysql sql database user-defined-functions stored-functions

目标: 我正在尝试将查询的结果存储为函数中的变量。 我希望能够在引用这些表的过程中做更多的事情。

我在下面有一个脚手架功能:

DELIMITER $$
CREATE FUNCTION getRatio(treatmentA INT, treatmentB INT)
RETURNS FLOAT
BEGIN
    DECLARE answer FLOAT;
    DECLARE countA, countB, countABIntersection;

    # Store patients of treatment A
    SELECT DISTINCT patient
    INTO **Variable**
    FROM Treatment
    WHERE TreatmentID = treatmentA;

    # Store patients of treatment B
    SELECT DISTINCT patient
    INTO **Variable**
    FROM Treatment
    WHERE TreatmentID = treatmentB;

    # Get Intersection of treatment B

    Set answer = count(TreatmentA) * count(TreatmentB) * count(IntersectionTreatmentAB)

    RETURN answer;
END $$
DELIMITER ;

如果有人可以提供帮助,我们将不胜感激。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

您只能存储或返回MySQL具有数据类型的函数的值。

简而言之,如果你想将结果集存储到变量,你必须有一个表数据类型,不幸的是MySQL没有这样的数据类型。

解决方案:您可以创建的临时表包含要存储的每个结果集的相应列(或者在您的案例中可能位于相同的临时表中)。

对临时表执行所有操作并将结果存储到变量(在您的情况下为FLOAT),返回变量。

如果有帮助,请告诉我:)。

-Thanks