php - 获取mysql中存储过程的数组输出

标签 php mysql arrays stored-procedures output

我创建了一个存储过程来计算每个技术人员的工作数量,使用该技术人员的 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/

相关文章:

java - 客户看不到新记录

php - 如何从 IPN 访问事务数组值

php - 如何使此代码按日期排序?

PHP/MySQL 动态创建准备查询

PHP 和 MySQL : Can 'insert on duplicate update' queries interfere?

javascript - 使用纯 Javascript 通过 AJAX 发送 WordPress 对象

php - 无法从客户端网站连接到远程mysql服务器

mysql - 在 Magento 中为模块创建数据库函数

ios - Swift - 根据多个条件搜索大数组

c++ - Nim 游戏 - 堆栈选择