2017-03-17 8 views
0

私は周囲にsreachingされていたと私はこの質問への答えを見つけることができませんでした。それは非常に簡単かもしれないし、バグかもしれないので、私が間違っていることを指摘する助けがあれば、それは前もって評価されている。選択とMysqlストアドプロシージャの単一の行を取得する方法

Iは、IDが一意であるテーブルを有する:

Table school 
--------------------------- 
id name  class fitness 
--------------------------- 
1 Joe  4  healthy 
2 Alice 7  good 
3 Bob  10  excellent 

ストアドプロシージャは次のとおりです

CREATE PROCEDURE checkid(IN ID INT) 
BEGIN 
    SELECT * FROM school WHERE id = ID; 
END 

は、以下のコマンドを使用して上記の手順を実行する:

CALL checkid(2) 

戻りますテーブル全体。私は、SELECTステートメントを変更した場合:

CREATE PROCEDURE checkid(IN ID INT) 
BEGIN 
    SELECT * FROM school WHERE id = ID LIMIT 1; 
END 

私が間違っている、このような戻り値として表の最初の行を取得します。


id name  class fitness 
--------------------------- 
1 Joe  4  healthy 

私はこれをどのように修正することができますか?

+1

私は[rextester](http://rextester.com/KOTL44097)で試してみましたが、あなたのコードは期待どおりに動作しています... –

+1

私のデータベースで試しました。最初からプロシージャを作成し直してください。 – Palindromer

+0

おかげで、残念ながらそれは私のためには動作しません。おそらく、私はそれがあなたのために働いていると言って以来、別のコンピュータで試してみるべきです。 – Tempo

答えて

0

ありがとうございました。多くの異なることを試した後、ネットを通してさらに検索します。問題を解決するのに役立つこのリンクが見つかりました。

How to get a row by ID in a MySQL Stored Procedure?

私は何か他のものへの入力パラメータ名を変更したときに、それが働きました。

1

データベースのスキーマやプロシージャ名、またはクエリやストアドプロシージャが正しく保存されていないと、何か問題があると思います。

デフォルトのスキーマをワークベンチで設定してから、プロシージャを作成して実行してください。 しかし、これはまったく不可能だと思います。

+0

お返事ありがとうございます。私は実際にワークベンチを使用しており、そこにプロシージャを作成した後、ワークベンチとcmdウィンドウの両方でprocを実行しました。結果は上記のとおりです。更新ステートメントは正常に動作しますが、選択は行いません。私はちょっと困惑しています.... – Tempo

+0

誰かがこのケースを助けることができます、私はそれは非常にシンプルに見えるかもしれないが、私はこの問題に固執していると言った。ここで何が間違っているのか分かりません。 – Tempo

関連する問題