如何从返回内容表的存储过程中获取数据

时间:2016-01-07 12:16:32

标签: mysql database stored-procedures plsql plsqldeveloper

我有一个存储过程,它返回任务列表及其详细信息。我希望在其他地方使用相同的程序,因为我也有类似的要求和一些小的改变。

但不同的是我只想用聚合函数获取一个列值(不是全部),例如。从同一程序获得 sum(time_left)

因为该程序是全局程序,所以我不能为特定要求更改它,另一方面我也不想再次重写相同的代码。

以下是我的程序及其输出的样子:

程序

DELIMITER $$

DROP PROCEDURE IF EXISTS PROC_Emp_task$$

CREATE PROCEDURE PROC_Emp_task(IN IN_assigned_to_id BIGINT)
BEGIN  
    SELECT
        Emp_task.task_id,
        Emp_task.name,
        Emp_userstory_task.userstory_id,
        Emp_task.estimated_end_date,
        (Emp_task.alloted_hour- Emp_task.actual_hour) AS time_left,
        APV_Priority.name AS priority,
        Emp_phase_lookup.title AS lifecyce_phase,
        APV_Status.name AS status_name,
        Emp_task.estimated_start_date
    FROM
        Emp_task
    INNER JOIN Emp_userstory_task ON (Emp_task.task_id = Emp_userstory_task.task_id)
    INNER JOIN ApplicationParamValue AS APV_Priority ON (Emp_task.priority_id=APV_Priority.appParamValueId)
    INNER JOIN Emp_lifecycle_phase ON (Emp_task.lifecycle_phase_id = Emp_lifecycle_phase.lifecycle_phase_id)
    INNER JOIN Emp_phase_lookup ON (Emp_phase_lookup.phase_id = Emp_lifecycle_phase.phase_id)
    INNER JOIN ApplicationParamValue AS APV_Status ON (Emp_task.status_id=APV_Status.appParamValueId)
    WHERE
        Emp_task.assigned_to_id=IN_assigned_to_id
    AND Emp_task.status_id <> (SELECT appParamValueId FROM ApplicationParamValue WHERE ApplicationParamValue.name='Completed' 
    AND appParamGroupId=(SELECT appParamGroupId FROM  ApplicationParamGroup WHERE ApplicationParamGroup.groupName='progress_status'))
    AND Emp_task.isActive=1
    ORDER BY estimated_end_date ASC,time_left ASC,priority ASC;
END$$

DELIMITER ;

输出 enter image description here

我正在考虑应用一些简单的解决方案,而不是,如下所示:

SELECT SUM(time_left) FROM (CALL PROC_Emp_task(101));

但是因为我们无法在select查询中调用过程。所以它没有奏效。

那么我们如何重复使用相同的程序呢?

0 个答案:

没有答案