2012-03-25 4 views
0

MYSQLでカーソルループを使用しようとしていますが、機能しません。私は基本的にhttp://dev.mysql.com/doc/refman/5.0/en/cursors.htmlの例をコピーしましたが、プロシージャの代わりに関数を使用しました。それは重要ですか?MySQLカーソル:「フィールドリスト」で「完了」カラム

デュアルから関数xxx()を実行しようとすると、「フィールドリスト」に未知の列「完了」というエラーが表示されます。何をすべきか?

delimiter $$ 
create function xxx() 
returns int deterministic 
    begin 
     DECLARE a INT; 
     DECLARE cur1 CURSOR FOR SELECT id FROM my_table; 

     OPEN cur1; 

     read_loop: LOOP 
      FETCH cur1 INTO a; 
      IF done THEN 
       LEAVE read_loop; 
      END IF; 
     END LOOP; 
     CLOSE cur1; 
     return 1;  
end$$ 
delimiter ; 

答えて

3

あなたはdoneと宣言しませんでした。 DECLARE done INT DEFAULT FALSE; そして最後に DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

+0

これは、ありがたいことです。そして、この例でもそうだったのです。 – user984003

+0

はい私は例を取る – safarov

関連する問題