2011-10-28 14 views
0

基本的な理想は、私が手続きを呼び出すときに、ただ1つの値だけでなく、resultsINTに設定し、選択をCOUNT(id)にすることによってデータのセットを取得したいということです。私は、誤解きた場合を除き、私は複数の値を取得するには、この手順を変更する方法を知りたいのですが ...MySQLの手続き複数の結果

DELIMITER // 
CREATE PROCEDURE getnames(IN id_in INT,OUT results ???) 
    BEGIN 
     set results=(select name from people where id>id_in); 
    END // 
DELIMITER ; 

答えて

2

するとは、単に以下の

DELIMITER // 
    CREATE PROCEDURE getnames(IN id_in INT) 
    BEGIN 
     select name from people where id>id_in; 
    END // 
DELIMITER ; 

にあなたの手順を変更することができるはずですこれは単にselectクエリの結果を返します。この場合は名前のセットです。

+0

私は、カーソルを使うことができると書かれた記事を見つけました...しかし、それはOracle用でした... –

1

ここで問題となるのは、MySQLではストアドプロシージャのテーブル列データ型のみが許可されているという点です。残念ながら、これには配列、リスト、またはコレクション型は含まれていません。

同様の質問はbeen asked beforeです。答えを読んでください - あなたを助けるかもしれません。そのうちの1つは、コンマで区切られたリストを大きいVARCHARデータ型で渡すことです。

結果を返すもう1つの方法は、結果を「結果テーブル」に格納し、プロシージャを呼び出して、結果を呼び出しコードから '結果テーブル'で参照することです。

1

MySQLのパラメータはオブジェクトまたはテーブルにすることはできません。複数の値を返す場合は、一時テーブルを埋めるか、プロシージャ内でSELECT文を実行してアプリケーション内のデータセットを読み込みます。