0

我有一个只包含以下内容的过程:

SELECT Col1, Col2 FROM table WHERE Id = 1;

这总是返回空值。如果我将声明更改为:

SELECT Id, Col1, Cold2 FROM table WHERE Id = 1;

该行按预期返回。mySql procs 是否要求 where 子句列出现在选择列表中?直接在 phpMyAdmin 中运行 SQL 时没有这种行为。

这是有问题的代码:

CREATE PROCEDURE sp_player_login
(
IN
    userGraphId INT(11),
    authToken TEXT
)
BEGIN

    DECLARE playerId INT;
    DECLARE newPlayer BOOLEAN DEFAULT FALSE;

    SELECT Id INTO playerId FROM player WHERE FacebookGraphId = userGraphId;

    If playerId IS NULL THEN

        -- Create the player.
        SET newPlayer = TRUE;

        -- Get new player defaults.
        SELECT NewPlayerTurns, NewPlayerMoney, NewPlayerMorale, NewPlayerMissilePower FROM defaults WHERE Id = 1;

    END IF;

END #

如果我没有在 select 子句中指定 Id 列,则第二个 SELECT NewPlayerTurns... 是返回空值的那个。如果我删除第一个 SELECT Id INTO ...第二个查询在选择子句中没有 Id 的情况下工作...?使困惑

4

0 回答 0