私は単に以下を含むprocを持っています:
SELECT Col1, Col2 FROM table WHERE Id = 1;
これは常に null 値を返します。ステートメントを次のように変更すると:
SELECT Id, Col1, Cold2 FROM table WHERE Id = 1;
行は期待どおりに返されます。mySql プロシージャは、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 #
2 番目の SELECT NewPlayerTurns... は、select 句で Id 列を指定しない場合に null 値を返すものです。最初の SELECT Id INTO を削除すると ...2 番目のクエリは、select 句に ID がなくても機能します...? 混乱している