0

基本的な考え方は、プロシージャを呼び出すときに、1つの値だけでなくデータのセットを取得したいということです(たとえば、に設定resultsして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 ;
4

3 に答える 3

2

私が誤解していない限り、あなたは単にあなたの手順を次のように変えることができるはずです

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

これにより、selectクエリの結果(この場合は名前のセット)が返されます。

于 2011-10-28T09:54:26.170 に答える
1

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

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

結果を返す別の方法は、結果を「結果テーブル」に保存し、プロシージャを呼び出してから、呼び出し元のコードから「結果テーブル」の結果を参照することです。

于 2011-10-28T09:56:23.603 に答える
1

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

于 2011-10-28T09:59:22.133 に答える