ストアドプロシージャーでループするとエラー
ストアドプロシージャーを空の行をつくるために、ループさせようとしていますが、エラーがでます。
#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
お礼
有難うございます。 '15 minute' この部分は文字列ではなくて、intervalという名の時刻計算用の特殊属性なのですね。 やっと意味が分かってきました。 分割してみたらスッキリ理解できました。 l_minute_num integer := 15; l_minute_itv interval := CAST( l_minute_num || ' minute' AS interval ); result := current_timestamp + l_minute_itv; 値のセットの方法はあんまり関係なさそうです。