Если вы выполняете несколько запросов, вам нужно создать временную таблицу для хранения промежуточных результатов, а затем просто сделать SELECT * FROM thattemporarytable
одной из последних операций в вашей процедуре.
Как то так ...
BEGIN
DROP TEMPORARY TABLE IF EXISTS `blah` ( num INT );
CREATE TEMPORARY TABLE `blah` ( num INT );
SET @x := 1;
WHILE @x<13 DO
INSERT INTO blah (num)
SELECT COUNT(work.workType)
FROM work
WHERE year(workDate)=yearInput
AND work.technicianID = id
AND month(workDate)= @x
;
SET @x := @x+1;
END WHILE;
SELECT * FROM blah;
DROP TEMPORARY TABLE blah;
END
или, если вы можете управлять им как одним запросом, обычный выбор должен работать:
BEGIN
SELECT COUNT(work.workType)
FROM work
WHERE year(workDate)=yearInput
AND work.technicianID = id
AND month(workDate) BETWEEN 1 AND 12
;
END