mysql - 存储过程:
1.简介
2.存储过程的优缺点
3.常用的命令
4.创建存储过程
一、简介:
概念类似于函数就是把一段代码封装起来,当要执行这段代码的时候,可以通过调用该存储过程来实现。在封装的语句里面,可以使用if/else,case,while 等控制结构
可以进行 SQL 编程
二、存储过程的优缺点:
存储过程的好处:
- 1.通过把处理封装在容易使用的单元中,简化复杂的操作。
- 2.由于不要反复简历一系列处理步骤,这保证了数据的完整性。
- 3.简化对变动的管理
- 4.提高性能
- 5.存在一些职能用在单个请求中的mysql元素和特性,存储过程可以使用它们来编程功能更强更灵活的代码。
存储过程的缺点:
- 1.一般来说,存储过程的编写比基本SQL语句复杂
- 2.你可能没有创建存储过程的安全访问权限
- 3.移植性差
三、存储过程常用命令:
查看现有的存储过程:show procedure status
删除存储过程:drop procedure 存储过程的名字;(删除存储过程不需要带括号)
调用存储过程:call 存储过程名字(); 或者 call 存储过程名字;(括号可以省略不写)
四、创建存储过程:
需要临时修改语句结束分隔符为$ delimiter $
1,体会SQL的“封装”
create procedure p1()
begin
select * from g;
end$
2,带“参数”
create procedure p2(n int)
begin
select * from g where num > n;
end$
3,使用 if else
create procedure p3(n int, j char(1))
begin
if j = 'h' then
select * from g where num > n;
else
select * from g where num < n;
end if;
end$
4,使用 while 循环,计算 1-n 的和
声明变量,赋值。如果入参类型为 boolean 类型,0表示false,1表示true。
create procedure p4(n smallint)
begin
declare i int; // 声明变量
declare s int default 1; // 默认值为 1
set i = 1; // 赋值
set s = 0;
while i <= n do
set s = s + i;
set i = i + 1;
end while;
end$
5,存储过程中的输入参数和输出参数:
输入型参数 in:在进行调用时需要传参
输出型参数 out :在调用时,需要使用“@”开头定义一个变量,在调用完存储过程之后,可以使用
select @变量名; 来查看存储过程执行的结果。
create procedure ordertotal(in number int, out total decimal(10,2))
begin
select sum(item_price * quantity) from orderitems where order_num = number
into total; // 把查询计算出来的结果赋值为输出参数 total
end$
调用:
1.先把结束分割符改回来
delimiter ;
2.调用:
call ordertotal(100, @total);
3.查看存储过程执行的结果:
select @total;
在mysql中,存储过程和函数的区别:
1,名称不同
自定义函数:create function
2,存储过程没有返回值
mysql 自定义函数:
https://blog.csdn.net/java_xuetu/article/details/78941132