0

テーブルの主キーを取得する単純なカーソルがあります。結果を見ると、フェッチされた主キー列のすべての値が null です。カーソルのクエリをスタンドアロン クエリとして実行すると、適切に結果が返されます。このテーブルは、主キーの値を持つ Account テーブルを参照します。「SELECT PrimaryKeyId」を「SELECT AccountId」に変更すると、フィールドの値が適切に取得されます。

ここで何が欠けていますか?

DECLARE testtableid INT UNSIGNED;
DECLARE accountid INT UNSIGNED DEFAULT getAccountId(inUserLoginId);
DECLARE cur CURSOR FOR SELECT TestTableId
                                 FROM testtable
                                WHERE AccountId = accountId;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN cur;    

named_loop: LOOP

    FETCH cur INTO testtableid ;

    IF done
    THEN
        LEAVE named_loop;
    END IF;
END named_loop;

CLOSE cur;
4

1 に答える 1

1

ブーム!

http://bugs.mysql.com/bug.php?id=28227

Windows 環境で MySql データベースを開発していることを忘れがちです。大文字と小文字の区別は Linux 環境でのみ適用されますが、注意が必要です。

クエリ:

DECLARE testtableid INT;
SELECT TestTableId FROM testable

大文字と小文字が区別される環境で実行されない場合、大文字と小文字が区別されない同じ名前のローカル変数が選択されます。この値は宣言されていなかったため、NULL でした。

いつか誰かの 1 時間のフラストレーションを救ってくれることを願って、私はこれを残しておきます。:)

于 2013-05-09T04:01:01.117 に答える