存储过程的基本语句格式
DELIMITER $$
CREATE
PROCEDURE 数据库名.存储过程名([in变量名 类型,out 参数 2,...])
BEGIN
[DECLARE 变量名 类型 [DEFAULT 值];]
存储过程的语句块;
END$$
DELIMITER ;
- 存储过程中的参数分别是 in,out,inout三种类型
- in代表输入参数(默认情况下为in参数),表示该参数的值必须由调用程序指定。
- ou代表输出参数,表示该参数的值经存储过程计算后,将out参数的计算结果返回给调用程序。
- inout代表即时输入参数,又是输出参数,表示该参数的值即可有调用程序制定,又可以将inout参数的计算结果返回给调用程序。
- 存储过程中的语句必须包含在BEGIN和END之间。
- DECLARE中用来声明变量,变量默认赋值使用的DEFAULT,语句块中改变变量值,使用SET 变量=值
存储过程的使用
CREATE
PROCEDURE dtcmscoredb.insert_article_en()
BEGIN
DECLARE my_Id int default 0;
DECLARE my_SiteId int default 2;
DECLARE my_ChannelId int default 11;
DECLARE my_Title varchar(200);
DECLARE my_ImgUrl varchar(200);
DECLARE done INT DEFAULT FALSE;
DECLARE cursor_article CURSOR FOR ( SELECT x.Title, x.ImgUrl, x.SortId FROM dtcmscoredb.dt_articles x WHERE Id between 366 and 367 );
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cursor_article;
loop_cursor:LOOP
FETCH cursor_article INTO my_Title, my_ImgUrl , my_SortId;
IF done THEN
LEAVE loop_cursor;
ELSE
INSERT INTO dtcmscoredb.dt_articles (SiteId, ChannelId, CallIndex, Title, Source, Author, LinkUrl, ImgUrl, SeoTitle, SeoKeyword, SeoDescription, Zhaiyao, Content, SortId, Click, GroupIds, Status, IsComment, CommentCount, LikeCount, AddBy, AddTime, UpdateBy, UpdateTime) VALUES(my_SiteId, my_ChannelId, '', my_Title, '', '', '', my_ImgUrl, '', '', '', '', '', my_SortId, 100, NULL, 0, 0, 0, 0, 'admin', '2022-09-06 12:10:29.0', 'admin', NULL);
select max(Id) from dtcmscoredb.dt_articles INTO my_Id;
INSERT INTO dtcmscoredb.dt_article_category_relation (ArticleId, CategoryId) VALUES(my_Id, 31);
END IF;
END LOOP loop_cursor;
CLOSE cursor_article;
END
;
CALL insert_article_en();