MySQLの手順複数の結果

基本的な考え方は、プロシージャを呼び出すときに、結果INT に設定して COUNT( id)など)。 私は複数の値を取得するために、この手順を変更する方法を知りたいです...

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

3 答え

私が誤解していない限り、あなたの手順を次のように変更するだけでよいはずです

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

これは単にselectクエリの結果を返します。この場合は名前のセットです。

2
追加された
私は、カーソルを使うことができると書かれた記事を見つけました...しかし、それはOracle用でした...
追加された 著者 ka_lin,

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

1
追加された

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

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

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

1
追加された