我有一个只包含以下内容的过程:
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 的情况下工作...?使困惑