В MySQL нет переменных-массивов, но вы можете использовать временную таблицу для хранения частичных результатов, сделать обычный запрос и использовать его как «результат»
DELIMITER //
DROP PROCEDURE IF EXISTS getExAnte //
CREATE PROCEDURE
getExAnte(startDate DateTime , stopDate DateTime)
BEGIN
DECLARE id INT ;
DECLARE instrumental TINYINT ;
DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE health_care_cursor CURSOR FOR SELECT h.id,h.instrumental FROM health_cares h inner join health_care_health_care_types hht on h.id=hht.health_care_id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN health_care_cursor;
/*1: CREATE TEMPORARY TABLE*/
DROP TEMPORARY TABLE IF EXISTS results_table;
CREATE TEMPORARY TABLE results_table(
numTotPren int,
numTotPrenCheck int,
numB int,
numBinTime int,
numD int,
numDinTime int
);
get_health_cares_loop: LOOP
IF done THEN
LEAVE get_health_cares_loop;
END IF;
FETCH health_care_cursor INTO id,instrumental;
/*2: SAVE YOUR RESULTS IN TEMPORARY TABLE */
INSERT INTO results_table (numTotPren,numTotPrenCheck,numB,numBinTime,numD,numDinTime)
SELECT distinct
count(*) as numTotPren ,
sum(case when appointment_date=availability_date then 1 else 0 end) as numTotPrenCheck,
sum(case when (appointment_date=availability_date AND urgency = 'B') then 1 else 0 end) as numB,
sum(case when (appointment_date=availability_date AND urgency = 'B' AND DATEDIFF(availability_date, contact_date) <= 10) then 1 else 0 end) as numBinTime,
sum(case when (appointment_date=availability_date AND urgency = 'D') then 1 else 0 end) as numD,
sum(case when (appointment_date=availability_date AND urgency = 'D' AND DATEDIFF(availability_date, contact_date) <= 30) then 1 else 0 end) as numDinTime
FROM cup_reservations
WHERE
contact_date >=startDate and
contact_date <stopDate and
obsolete IS NULL and
health_care_code in (SELECT t.catalog_code FROM health_care_types t inner join health_care_health_care_types ht on t.id=ht.health_care_type_id where ht.health_care_id=id )
;
END LOOP get_health_cares_loop;
CLOSE health_care_cursor;
/*3: FINALLY RUN A REGULAR QUERY */
SELECT * FROM results_table;
END
//
DELIMITER ;