MySQL-10-mysql编程(二)

2015-01-23 22:07:20 · 作者: · 浏览: 12
nd while 标签;

例子1:

drop function if exists func2;

delimiter $$

create function func2() returns int

begin

set @i = 1;

set @sum = 0;

while @i <= 10 do

set @sum = @sum + @i;

set @i = @i + 1;

end while;

?

return @sum;

end

$$

delimiter ;

?

例子2:

drop function if exists func;

?

delimiter $$

create function func() returns int

begin

set @i = 1;

set @sum = 0;

w:while @i <= 10 do

if @i = 5 then

leave w;

end if;

set @sum = @sum + @i;

set @i = @i + 1;

end while w;

?

return @sum;

end

$$

delimiter ;

?

例子3:

drop function if exists func;

?

delimiter $$

create function func() returns int

begin

set @i = 1;

set @sum = 0;

w:while @i <= 10 do

if @i = 5 then

set @i = @i + 1;

iterate w;

end if;

set @sum = @sum + @i;

set @i = @i + 1;

end while w;

?

return @sum;

end

$$

delimiter ;

?

说明:即使在函数内部声明的变量,如果使用@变量 形式,也是全局变量,在函数外部也可以访问。要想使用局部变量,有以下两种方法:

1.函数参数: 格式: 参数名 类型

2.函数声明局部变量: 使用declare声明局部变量

declare i int default 0; (局部变量没有@符号)

?

例1(使用参数):

drop function if exists sayHello2;

delimiter $$

create function sayHello2(user_name varchar(10)) returns varchar(20)

begin

return concat('hello ',user_name);

end

$$

delimiter ;

?

还可以像下面一样使用函数:

select id,sayHello2(userName) from student;

例2(使用declare声明局部变量):

drop function if exists mySum;

?

delimiter $$

create function mySum() returns int

begin

declare i int default 1;

declare sum int default 0;

while i<=100 do

set sum=sum+i;

set i=i+1;

end while;

return sum;

end

$$

?

delimiter ;

?

?

应用:

1.存储过程

2.存储函数

3.触发器