如何使用存储过程

时间:2017-07-04 13:38:09

标签: mysql stored-procedures

我正在学习SQL /存储过程。我有表与idGroup和idDraft 。现在一个idgroup可以拥有多个idDrafts 。以下是情景。

idGroup idDraft
  1       1
  1       2
  1       3
  2       1
  2       2

现在我想写一个存储过程,我可以传递idGroup,它将返回下一个Max idDraft。

预期输出

所以如果我将idGroup作为1传递,我应该将值变为4,如果我将idGroup传递给2,我应该得到值为3.下面是我的尝试。请指导我。

存储过程:

CREATE DEFINER=`DEV`@`%` PROCEDURE `GetNextDraftID`(
            IN p_idGroup int(11),
            OUT p_NextID int(11)
)
BEGIN
    DECLARE tempMax int(11);

    SELECT 
        ss.idDraft Into tempMax
    FROM
        tblDraft ss
    WHERE
        idGroup = p_idGroup
    GROUP BY idDraft
    ORDER BY idDraft DESC
    LIMIT 1;

    IF ISNULL(tempMax) THEN
        SET p_NextID = 1;
    else
        SET p_NextID = tempMax +1;
    end IF;

END

我是初学者,所以我甚至不知道如何测试这个存储过程。请指导我。我是否需要在此处进行更多更改。

0 个答案:

没有答案