Mysql存储过程 变量,条件,循环语句用法

数据库

删除存储过程

drop procedure 存储过程名

 

存储过程的下面代码是打印到控制台

select num;

 

查看所有数据库的存储过程

show procedure status;

 

查看存储过程创建的源代码

show create procedure 存储过程名

 

 

1、变量的 声明

Declare 声明局部变量

begin end 里面

在符合语句的开头,在任何其他语句之前

Declare 变量名 类型[default value];

 

例题:

Declare a int default 5;

 

Delimiter $$

Create procedure selectall()

begin

Declare a int default 5;

select a;

end$$

 

call selectall()$$

Mysql存储过程 变量,条件,循环语句用法

2、set的用法

set 变量名 = 表达式的值

 

例题

Delimiter $$

create procedure p1()

begin

declare a int;

set a = (select sno from student where sno = 201502);

select a;

end$$

 

call p1()$$

Mysql存储过程 变量,条件,循环语句用法

 

 

Delimiter $$

create procedure p3()

begin

declare a char;

set a = (select department from student where sno = 201502);

select a;

end$$

 

call p3()$$

 

 

课堂练习

1)建表T(S1,S2)

delimiter ;

create table T

(

S1 int,

S2 int

);

2)定义一个存储过程,声明两个变量a,b,并且设置a,b的初始值为5,将a的值插入表T的s1列,并且当S1>=b,求出S1*A的结果

 

delimiter $$

Create procedure tselect()

begin

declare a,b int default 5;

insert into T(S1) values(a);

select S1*a from T where S1>=b;

end$$

call tselect()$$

Mysql存储过程 变量,条件,循环语句用法

 

3)条件语句

语法:

IF 条件判断

THEN 执行语句

ELSE IF 条件判断

THEN 执行语句

ELSE 执行语句

END IF;

 

 

课堂练习 :

输入一个数,对num进行判断,

如果num=-1,往表T1中插入数据(num,666);

0 往表T1中插入数据(num,num+1)

1 往表T1中插入数据(num,num+2)

其他 往表T1中插入数据(num,num*5)

 

 

首先

创建表

delimiter ;

create table T1(num int);

 

创建存储过程

delimiter $$

create procedure insert_t1(in num1 int)

begin

if num1=-1 then

insert into t1(num) values(666);

elseif num1=0 then

insert into t1(num) values(num1+1);

Elseif num1=1 then

insert into t1(num) values(num1+2);

else insert into t1(num) values(num1*5);

end if;

end$$

call insert_t1(1)$$

Mysql存储过程 变量,条件,循环语句用法

 

课堂练习二

输入0,打印t1表

如果是其他,告诉用户,你的输入有误

 

delimiter $$

create procedure insert_t1(in num1 int)

begin

if num1=0 then

select * from t1;

else select '您的输入有误';

end if;

end$$

call insert_t1(1)$$

Mysql存储过程 变量,条件,循环语句用法

 

Mysql存储过程 变量,条件,循环语句用法

 

A、case 语句

case变量

when 值 then 语句

ELSE 语句

 

delimiter $$

create procedure p5(in num int)

begin

case num

when 0 then select * from student order by sno asc;

when 1 then select * from student order by sno desc;

else select '您的输入有误';

end case;

end$$

call p5(5)$$

Mysql存储过程 变量,条件,循环语句用法

 

// 查找JAVA的API关于调用存储过程

输入参数

输入参数

DEMO

4)循环

WHILE END WHILE

标准语法:

WHILE条件判断 DO 语句

END WHILE;

 

求出1+2+.....+100

 

delimiter $$

create procedure p6()

begin

Declare tem int default 1;

Declare sum int default 0;

while tem<=100 do

set sum=sum+tem;

set tem = tem+1;

End while;

select sum;

end$$

Mysql存储过程 变量,条件,循环语句用法

 

repeat end repeat

本身repeat util是do while的形式,意义不同,表示 一直循环到满足until后面的条件为止

标准格式;

REPEAT

语句;

until 判断条件

end repeat;

 

求出1+2+.....+100

 

delimiter $$

create procedure p7()

begin

Declare tem int default 1;

Declare sum int default 0;

repeat

set sum=sum+tem;

set tem = tem+1;

until tem>100

end repeat;

select sum;

end$$

call p7()$$

Mysql存储过程 变量,条件,循环语句用法

 

 

 

LOOP END LOOP

标签:

语法:

标签名称:LOOP

语句;

LEAVE 标签名称;

END LOOP;

 

注意 loop 一般要和一个标签(此处为label,名称可以自定义,不过要保证前后一致)一起使用,且在 loop 循环中一定要有一个判断条件,能够满足在一定的条件下跳出 loop 循环(即 leave )!

 

 

求出1+2+.....+100

 

delimiter $$

create procedure p8()

begin

Declare tem int default 1;

Declare sum int default 0;

label:loop

set sum=sum+tem;

set tem = tem+1;

if tem>100 then leave label;

end if;

end loop label;

select sum;

end$$

call p8()$$

 

 

Mysql存储过程 变量,条件,循环语句用法