MySQL存储过程 - 如果不起作用

时间:2017-10-08 17:11:36

标签: mysql

我将SQL Server存储过程转换为MySQL并遇到问题。我有一个IF THEN ELSE的存储过程,虽然没有给出错误,但也没有返回任何数据,我没有看到修复它的问题。查询本身是正确的并返回数据,但似乎不适用于存储过程。这是真实查询的简化版本,仅供参考。

用于创建存储过程的SQL是:

    DROP PROCEDURE IF EXISTS `sp_GetVolunteerAwardsList`;
    DELIMITER //

    CREATE PROCEDURE `sp_GetVolunteerList`( IN glAward_in int)
    BEGIN
        DECLARE glAward_In INT;
        DECLARE awardType_In varchar(100);
        DECLARE awardActive INT;

        IF (glAward_In) = 0 THEN 
            SELECT * FROM tbl_volunteer
        ELSEIF (glAward_In) = 1 THEN
            SELECT * FROM tbl_volunteerpositions
        END IF;
    END
//

与往常一样,任何帮助都会受到最高的赞赏。

1 个答案:

答案 0 :(得分:1)

检查glAward_In参数或变量。 SP以小写形式接收参数glAward_in,i。 然后有一个DECLARE声明了一个不同的变量glAward_In,i是大写的。

if使用大写的glAward_In完成,而不是在SP的任何位置设置。并且小写参数不在SP中的任何地方使用。

我认为您必须以大写形式删除变量的DECLARATION,并使用小写参数进行IF评估。