0

私はこのストアドプロシージャを持っています:

DELIMITER //
DROP PROCEDURE IF EXISTS cursor_example//

CREATE PROCEDURE cursor_example()
BEGIN
    DECLARE niche_id INT;
    DECLARE niche_name VARCHAR(100);

    DECLARE curl CURSOR FOR SELECT * FROM `niche`;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

    OPEN curl;
    my_loop:LOOP
        FETCH curl INTO niche_id, niche_name;
        IF done=1 THEN
            LEAVE my_loop;
        END IF;
    END LOOP my_loop;
    CLOSE curl;
END//

DELIMITER ;

問題は、カーソルの反復が終了した後、ニッチ id と niche_name の行をカーソルから取り出す方法です。ストアド プロシージャから結果セットを変数として取得できません。では、ストアド プロシージャでのカーソルの使用は主に内部的な目的のためですか?

4

1 に答える 1

0

結果が- 'スカラー値'の場合、次のいずれかのバリアントを使用できます。

  1. SELECT niche_id, niche_name;手順から実行します。
  2. OUTパラメータを使用します。

結果が値のセットである場合は、一時テーブルなどの別のテーブルにデータを入力する必要があります。

また、テーブルからデータを読み取って別のテーブルに格納する場合は、カーソルを開く代わりにINSERT...SELECTステートメントを使用してみてください。

于 2012-09-05T10:21:05.213 に答える