视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysql存储过程事例
2020-11-09 13:29:05 责编:小采
文档


mysql 存储过程例子 (1)循环遍历值 drop procedure if exists doit ;/* *delimiter表示以//结束编译 * */delimiter //create procedure doit (in parameter integer)begindeclare v1 int ;set v1 = parameter ;set parameter = 90 ;while v10 doselect now(

mysql 存储过程例子
(1)循环遍历值

drop procedure if exists doit ;
/*
 *delimiter表示以//结束编译
 *
 */
delimiter //

create procedure doit (in parameter integer)
begin
declare v1 int ;
set v1 = parameter ;
set parameter = 90 ;
while v1>0 do
	select now();
	set v1 = v1 - 1 ;
end while ;

select parameter ;
end;
//
delimiter ;

(2)动态执行sql并注入参数

drop procedure if exists test_insert ;
-- delimiter表示以//结束编译
delimiter //

create procedure test_insert(in num int) 
 begin
 -- 使用变量时不能使用declare 只能用set @id = .. 模式
 -- declare v1 int(11);
 set @v1=num ;
 -- declare sql varchar(200);
 -- declare name varchar(20);
 set @name='wxlan' ;
 set @sql='insert into test values(?,?,now())' ;
 prepare state_ from @sql ;
 while @v1 > 0 do
	execute state_ using @v1,@name ;
	set @v1 = @v1 -1 ;
 end while ;
 end;
 //
 delimiter ;

(3)游标是使用

drop procedure if exists test_cursor ;
-- delimiter表示以//结束编译
delimiter //

create procedure test_cursor(out result varchar(128)) 
 begin
 -- 游标所使用变量需要在定义游标之前申明
 declare id int(11);
 declare name varchar(20);
 -- 遍历数据结束标志 注意位置顺序
 DECLARE done INT DEFAULT FALSE;
 -- 注意用别名 因为id在上面已经有定义所以需要使用表的别名区别
 declare cur_test CURSOR for select t.id,t.name from test t;
 -- 将结束标志绑定到游标 
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
 open cur_test;
 repeat
 fetch cur_test into id, name;
	 select id ;
	 -- concat_ws函数用逗号后面的参数隔开 concat_ws(',','12','33','332') --> 12,33,332
 select concat_ws(',',result,id,name) into result ;
 until done
	 end repeat;
 close cur_test; 
 
 select result ;
 end;
 //
 delimiter ;

下载本文
显示全文
专题