Home > Database > Mysql Tutorial > body text

mysql 存储过程事例

WBOY
Release: 2016-06-07 16:27:34
Original
1039 people have browsed it

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 ;
Copy after login


(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 ;
Copy after login


(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 ;
Copy after login


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!