Пользовательские функции 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 ;

Если кто-то может помочь, мы будем очень признательны. Заранее спасибо.


person SalicBlu3    schedule 24.02.2014    source источник
comment
Вы можете сохранить одно значение в вышеупомянутых переменных в операторе Select. не уверен, сколько значений возвращает ваш оператор выбора.   -  person Deepak Rai    schedule 24.02.2014


Ответы (1)


Вы можете хранить или возвращать значение только из функции, у которой есть типы данных MySQL.

Короче говоря, если вы хотите сохранить набор результатов в переменной, у вас должен быть тип данных таблицы, к сожалению, в MySQL его нет.

Решение. Что вы можете сделать, так это создать временные таблицы с соответствующими столбцами для каждого результирующего набора для хранения (или, в вашем случае, в одной и той же временной таблице).

Выполните все операции с временной таблицей и сохраните результат в переменной (в вашем случае FLOAT), верните переменную.

Дайте мне знать, если это поможет :)

-Спасибо

person avisheks    schedule 24.02.2014
comment
Спасибо! Я не знал, что тип данных таблицы недоступен в MySQL. - person SalicBlu3; 24.02.2014