0

私は単に以下を含む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 がなくても機能します...? 混乱している

4

0 に答える 0