- 締切済み
ストアドプロシージャーでループするとエラー
ストアドプロシージャーを空の行をつくるために、ループさせようとしていますが、エラーがでます。 #1313 - RETURN is only allowed in a FUNCTION 書いたソースです。 delimiter | CREATE PROCEDURE looptest(OUT param1 INT) begin declare cnt int default 0; declare result varchar(255) default seed; lbl : loop set cnt =cnt +1; if cnt >= param1 then leave lbl; else INSERT INTO `wp_base_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES (NULL, '0', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', '', '', 'draft', 'open', 'open', '', '', '', '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', '0', '', '0', 'page', '', '0'); end if; end loop lbl; return result; END | delimiter; call looptest; #1313 - RETURN is only allowed in a FUNCTION
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- sppla
- ベストアンサー率51% (185/360)
私も自分でストアド書くときはヘルプ見ながらだし、英語も自信はありませんが >#1313 - RETURN is only allowed in a FUNCTION RETURN は FUNCTION の中でのみ許される、つまりストアドプロシージャでは使えないという意味だと思います。 RETURN を使わずに param1 には SET で値を設定すればいいことだと思いますよ。