mysql 存储过程
2017-08-31 15:09 晨曦曙光 阅读(341) 评论(0) 编辑 收藏 举报1..创建存储过程
DELIMITER // (创建过程前先要修改mysql的结束符为//)
create procedure proc1()(创建一个存储过程,方法名为proc1())
begin (存储过程开始)
declare var int default 100;(声明一个变量var 类型为int 类型 默认值为100)
select var;(输出这个变量值)
end// (存储过程结束)
DELIMITER ;(结束后要把结束符修改回;)
call proc1();(存储过程的调用)
2.通过set关键字修改变量值
DELIMITER // (创建过程前先要修改mysql的结束符为//)
create procedure proc1()(创建一个存储过程,方法名为proc1())
begin (存储过程开始)
declare var int default 100;(声明一个变量var 类型为int 类型 默认值为100)
select var;(输出这个变量值)
set var = var +10;(通过set关键字修改变量值)
select var ;
end// (存储过程结束)
DELIMITER ;(结束后要把结束符修改回;)
call proc1();
3.查询数据表中的指定数据
DELIMITER //
create procedure proc3()
begin
declare var1 varchar(20);//声明类型为varchar 的变量var1
declare var2 int ;//声明类型为int的变量var2
//选择来自student数据表中ID为1中的name和age 两个字段中的数据放入var1和var2这两个变量中
select name, age into var1,var2 from student where id =1;
select var1 as '姓名' ,var2 as '年龄';//给变量var1取别名为姓名,var2取别名“年龄”
end //
DELIMITER ;
call proc3();
4.存储过程中的油标使用
DELIMITER //
create procedure proc4()
begin
declare var1 varchar (20);
declare var2 int ;
//声明一个游标变量用来存储student 数据表中指定的数据值
declare getNameAge_Stu1 cursor for select name,age from student where id = 1;
open getNameAge_Stu1;//打开游标变量
fetch getNameAge_Stu1 into var1,var2;// 获取游标变量中的数据放入var1,和var2这两个变量中。顺序为查询数据的顺序
close getNameAge_Stu1;//关闭游标
select var1 as '姓名' ,var2 as '年龄';//为变量取别名并输出
end //
DELIMITER ;
call proc4();
5.存储过程中的流程控制(if 语句)
DELIMITER //
create procedure proc5()
begin
declare var int;
if var is null then select 'var is null';//如果变量var为null 就输出var is null
else select 'var is not null';//否则输出var is not null
end if;//结束if语句
end //(结束创建过程)
DELIMITER ;
call proc5();//调用存储的过程
6.存储过程中的流程控制(case 语句)
DELIMITER //
create procedure proc6()
begin
declare var int default 1;//声明一个int 类型的变量var 默认值为1
case var
//当变量var 为1的时候就输出数据表student 中ID为1的数据
when 1 then select * from student where id =1;
//当变量var 为2的时候就输出数据表student 中ID为2的数据
when 2 then select * from student where id =2;
如果var 即不为1也不为2的时候就输出数据表student中的所有数据
else select * from student ;
end case;//结束case
end // (结束过程)
DELIMITER ;
7.存储过程中的流程控制(loop 循环语句)
DELIMITER //
create procedure proc7()
begin
declare var int default 1;//声明一个int 类型的变量var 默认值为1
//循环(loop)选择(select)来自数据表student中ID为变量为var的数据
myloop:loop select * from student where id = var;
当变量var>=3的时候就离开这个循环myloop
if var >=3 then leave myloop;
end if;//结束if 条件
set var =var+1;(通过set关键字修改变量值)
end loop;//结束循环
end //
DELIMITER ;
8. 存储过程中的流程控制(repeat 循环语句)
DELIMITER //
create procedure proc8()
begin
declare var int default 1;
//重复(repeat)插入(insert)值(values)(null,'Jack',12,'男')到数据表(student)中
repeat insert student values (null,'Jack',12,'男');
set var = var + 1;(通过set关键字修改变量值)
//直到(until)变量var>=5的时候结束重复插入
until var >= 5 end repeat;
end //
DELIMITER ;
9。存储过程中的流程控制(while 循环语句)
DELIMITER //
create procedure proc9()
begin
declare var int default 1;//声明一个int 类型的变量var 默认值为1
//var 变量小于4
while var <4
//就插入数据(null,'翠华',18,'女') 到student中
do insert student values (null,'翠华',18,'女');
set var = var +1;
//结束while循环
end while;
end //
DELIMITER ;
10.查看存储过程
show create procedure proc9;
11.删除数据表中的数据
delete form student where id>5;
列:用过程删除数据
create procedure proc()
-> begin
-> delete from student where id>5;
-> end //
12.查看存储过程
show procedure status like '%proc';
show create procedure proc9;
13.修改存储过程
只能修改存储过程的特性,不能修改存储过程的代码。(实际开发不常用,)
如果一定要修改,就先删除在新建存储过程。(实际的开发中常用)
14.删除存储过程
drop procedure (或者 function ) proc9;
15.显示数据表中的所有存储过程
show procedure status like 'proc%';