3

引数を使用してプロシージャを作成しようとしています。しかし、私がそれらをWHERE状態で使用すると、そこにはなかったようなものになります。それらは単に無視されます。

DELIMITER //

DROP PROCEDURE IF EXISTS p //

CREATE PROCEDURE p (IN player TEXT, OUT num INT)
BEGIN
  SELECT COUNT(*) INTO num FROM `sg_playerstats` WHERE `player` = player; 
END

//

DELIMITER ;

Num は正しく入力されますが、player に何を入れても、結果は常に 66 になります (テーブルには 66 行あります!)。

私は何を間違っていますか???

4

1 に答える 1

8

パラメータの名前を変更し、

CREATE PROCEDURE p (IN _player TEXT, OUT num INT)
BEGIN
  SELECT COUNT(*) INTO num FROM `sg_playerstats` WHERE `player` = _player; 
END

それが得られる理由は、たまたま名前の衝突があるためです。

于 2013-01-25T04:02:57.000 に答える