1

목표 : 쿼리 결과를 함수에 변수로 저장하려고합니다. 나는이 테이블을 참조하는이 절차에서 더 많은 일을 할 수 있기를 바란다.MySQL 사용자 정의 함수는 쿼리 결과를 저장합니다.

나는 발판 기능 아래에있어 : ​​사람이 도움을 줄 수있는 경우

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

당신은 단일 값을 저장할 수 있습니다. select 문이 반환하는 값의 수를 모르십니까? – Deepak

답변

3

MySQL이 데이터 유형을 가지고있는 함수에서만 값을 저장하거나 반환 할 수 있습니다.

즉, 결과 세트를 변수에 저장하려면 테이블 데이터 유형이 있어야합니다. 불행히도 MySQL에는 그러한 것이 없습니다.

솔루션 : 당신이 할 수있는 일은 각 결과 집합을 저장하기 위해 각각의 열이있는 임시 테이블을 만들거나 케이스의 동일한 임시 테이블에있을 수 있습니다.

임시 테이블에 대한 모든 조작을 수행하고 결과를 변수 (FLOAT)에 ​​저장하고 변수를 리턴하십시오.

는 도움이된다면 알려주세요 :) 위의 Select 문에서 변수를 언급에

고마워요

+0

고마워요! MySQL에서 테이블 데이터 유형을 사용할 수 없다는 것을 알지 못했습니다. – SalicBlu3