MySQL 存储过程 returns 多条记录同时直接查询 returns 一条

MySQL stored procedure returns multiple records while straight query returns one

如果我在下面创建这个存储过程和 运行 它我会从 table 返回两行,而它应该只是一个查询。

    CREATE PROCEDURE `getUserName`(IN Guid VARCHAR(36), IN GameID INT(11))  
    BEGIN  
        SELECT `Name` as UserName, `GUID` as guid  
        FROM playerdata  
        WHERE `GUID` = Guid AND `GameID` = GameID;  
    END

    CALL getUserName('86fd1007-4a9c-11e7-b2e2-1803733c2d41', 1001);

Returns 见图片

但是,如果我只是 运行 它作为常规查询

    SELECT `Name` as UserName, `GUID` as guid
    FROM playerdata
    WHERE `GUID` = "86fd1007-4a9c-11e7-b2e2-1803733c2d41" AND `GameID` = 1001;

Returns 见图片

我对考虑到的行为感到困惑……至少对我来说它们是同一回事。

CREATE PROCEDURE `getUserName`(IN IN_Guid VARCHAR(36), IN IN_GameID INT(11))  
    BEGIN  
        SELECT `Name` as UserName, `GUID` as guid  
        FROM playerdata  
        WHERE `GUID` = IN_Guid  AND `GameID` = IN_GameID ;  
    END

    CALL getUserName('86fd1007-4a9c-11e7-b2e2-1803733c2d41', 1001);

试试上面的代码。

如果输入参数与列名同名,最终会等价于1=1,所以condition.Means没有意义GameID = GameID1=1都是相等的。 因此,请始终尝试使输入和输出参数名称与特定 table.

的列名称不同

我试过了,没问题。

希望对您有所帮助。