簡単にするために、ストアドプロシージャ内で動的に作成されるセットを返したいとします。ループ内で計算されます)。MySQLストアドプロシージャから一度に複数の行を返す方法
ので、同様に私が働いてきたいくつかのデータベースは、プロシージャの結果セットにOUT
パラメータの現在の値を追加SUSPEND
手術をした:
DELIMITER $
CREATE PROCEDURE EvenNumbers(
IN n INT, OUT NUM INT)
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET NUM = i;
SUSPEND; /* adds a row with a value 'i' for column NUM to the result set */
SET i = i+2;
END WHILE;
END$
DELIMITER ;
SUSPEND
は、MySQLのキーワードですが、私これは動作しないので同じことをしないと仮定します(Error: Unexpected 'SUSPEND'
)。
MySQLのストアドプロシージャから行のセットを1つずつ返すにはどうすればよいですか?
「一度に1つ」というようなものはありません。ストアドプロシージャが完了して実行され、結果が得られます。それらの結果をクライアントにストリーミングする場合は、それがあなたのものです。 – tadman
@tadmanプロシージャの最後に結果をどこかに格納してクライアントに返すのは問題ないですが、MySQLでどのように行うのかわかりません(一時的なテーブルを除いても、 。 – Alex