目标: 我正在尝试将查询的结果存储为函数中的变量。 我希望能够在引用这些表的过程中做更多的事情。
我在下面有一个脚手架功能:
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 ;
如果有人可以提供帮助,我们将不胜感激。 提前谢谢。
答案 0 :(得分:3)
您只能存储或返回MySQL具有数据类型的函数的值。
简而言之,如果你想将结果集存储到变量,你必须有一个表数据类型,不幸的是MySQL没有这样的数据类型。
解决方案:您可以创建的临时表包含要存储的每个结果集的相应列(或者在您的案例中可能位于相同的临时表中)。
对临时表执行所有操作并将结果存储到变量(在您的情况下为FLOAT),返回变量。
如果有帮助,请告诉我:)。
-Thanks