存储过程
存储过程的概念
存储过程(Stored Procedure)是在大型数据库中,一组为了完成特定功能的SQL语句集,它存储在数据库中.
一次编译永久有效.用户通过指定的存储过程的名字,并给出参数来执行它.数据库利用存储过程能够提升效率.
总之:存储过程就是一组经过编译号的sql语句集合.它能够提高sql语句的重复利用和效率.
存储过程一般用在对数据的增删改操作.
存储过程的创建
创建语句:
delimiter 分隔标记符
create procedure 存储过程名称(参数列表)
begin
sql语句1;
sql语句2;
...
sql 语句n
end 分隔标记符
delimiter ;
创建存储过程的注意事项:
- 1.参数列表包含三个部分:参数模式, 参数名称, 参数类型.其中参数模式有:in, out, inout三种.in:代表该参数可以接收输入数据(类似java中方法的形参).out:代表该参数可以返回输出结果(类似java中方法的返回值).inout:代表该参数既能接收数据,又可以返回输出结果.
- 2.如果存储过程的sql语句仅有一句,那么begin和end关键字可以省略.
- 3.因为存储过程体中的sql语句必须要加分号结尾,所有为了不产生结束语句的歧义,可以使用关键字:delimiter用来重新定义mysql的分隔符.
存储过程的调用
语句:
call 存储过程名称(实参);
例1:向emp表中修改某员工的工资
例2:计算两个int变量之和
例3:交换两个int变量的值
删除存储过程
语句:
drop procedure 存储过程名称;
查询存储过程
语句:
show create procedure 存储过程名称;
函数与流程控制语句
函数
函数的概念
一组预先编译好的sql语句的集合.可以提高代码的重用性,减少编译次数,提高了效率.
函数和存储过程的区别:存储过程可以有0个或多个返回结果,适合做增删改.函数有且仅有一个返回值,适合做处理数据后返回一个结果.
MySQL提供了很多函数供我们使用,使用过程见第四章的常用函数部分.
创建函数
有时候MySQL提供的函数不够我们使用,需要我们自定义函数,自定义函数的语句如下:
delimiter 分隔符
create function 函数名称(参数列表) returns 返回值类型
begin
sql语句1;
sql语句2;
...
sql语句n;
end 分隔符
delimiter ;
创建函数的注意事项:
- 1.参数列表包含两部分:参数名称和参数类型
- 2.函数体必须要有return语句.
- 3.函数体中只有一条sql,begin和end关键字可以不需要写
- 4.delimiter定义分隔符
- 5.函数一般用来做查询使用,insert, delete, update不要出现在函数体中.
例1:创建一个函数,该函数用来求两个整数相乘的结果
查看函数
语句:
show create 函数名称;
删除函数
语句:
drop function 函数名称;
流程控制语句
在函数(包括存储过程)中需要书写函数体,那么有时就要有一定的流程控制,那么就需要流程控制的语句.流程总共有:顺序结构, 选择结构, 循环结构.
选择结构
if elseif else语句:能够实现多选一
语句:
if 条件表达式1 then 语句1;
elseif 条件表达式2 then 语句2;
...
else 语句n;
end if;
注意:该语句只能出现在begin...end中
循环结构
while语句:实现循环
语句:
while 条件表达式 do
循环体语句...
end while;
两个关键字:
iterate:类似于continue,结束本次循环,继续下次循环
leave:类似于break,结束循环.