Jeśli wywalę tego IF'a wartość zostanie zwrócona

Gdy zapuszczę query w koncoli przy uzyciu parametrów przekazanych do funkcji to też dostanę wartości.
Podejrzewam brak jakiejś pierdółki, ale już nie mam pomyslu.
DECLARE firstDate DATE; ... ELSE BEGIN SET firstDate = ( SELECT MAX(ct.dt) FROM calendar_table ct JOIN terminy t ON ct.y = t.yFrom AND ct.m = t.mFrom WHERE t.Id = periodId AND ct.d <= DAY(selectedDate) AND ct.m = MONTH(selectedDate) AND ct.y = YEAR(selectedDate) AND weekday(ct.dt) = t.periodEnd + 1 ); IF (firstDate IS NULL) THEN SET firstDate = ( SELECT MAX(ct.dt) FROM calendar_table ct JOIN terminy t ON ct.y = t.yFrom AND ct.m = t.mFrom WHERE t.Id = periodId AND ct.m = MONTH(selectedDate) - 1 AND ct.y = YEAR(selectedDate) AND weekday(ct.dt) = t.periodEnd + 1 ); END IF; END; END IF; ...