我创建了一个存储过程来计算每个技术人员的工作数量,使用该技术人员的 ID 和预期年份作为该存储过程的输入,但我坚持使用 . 。 。 如何在该过程中获取输出数组,以便 我可以稍后在 php 代码中使用它。 这是我的存储过程:
DROP PROCEDURE `work_count`;
CREATE DEFINER=`root`@`localhost` PROCEDURE `work_count`(IN `id` INT, IN `yearInput` INT) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
BEGIN
SET @x := 1;
WHILE @x<13 DO
SELECT COUNT(work.workType)
FROM work
WHERE year(workDate)=yearInput
AND work.technicianID = id
AND month(workDate)= @x;
SET @x := @x+1;
END WHILE;
END
最佳答案
如果您要执行多个查询,则需要创建一个临时表来保存中间结果,然后将 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
关于php - 获取mysql中存储过程的数组输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53179643/