1.什么是存储过程?
存储过程是封装了一条或多条SQL的集合。它的好处是简单、高性能、安全。
2.为什么要使用存储过程?
- 简化复杂的操作,把SQL封装起来容易使用。
如果所有开发人员和应用程序都使用同一存储过程,则所有使用的代码都是相同的,防止多余执行的步骤保证了数据的一致性。 - 简化对变动的管理,如果表名列名或者业务逻辑发生变化,只需要改变存储过程中的代码,使用它的人甚至不需要知道这些变化。通过对存储过程限制对基础数据的访问,减少数据讹误的机会(讹误是指无意识或别的原因所导致的数据和讹误)。
- 调用存储过程比使用单独的SQL要快很多,这提高了性能。
3.存储过程有什么缺点?
存储过程的编写比基本SQL要复杂,对个人技能水平要求较高。
数据库管理员通常限制存储过程的权限,不过幸运的是创建存储过程和使用存储过程的权限是分离的,你可能不能创建自己的存储过程,但仍然可以去执行别的存储过程。
4.怎样去创建存储过程?
Create Procedure 存储过程名()
begin
sql语句;
end;
5.使用和删除存储过程
call 存储过程名;
drop Procedure 存储过程名;
6.使用参数的存储过程
IN 类似形参
OUT 类似返回值
INTO 类似=号赋值
要使用该存储过程,需要指定三个变量名,MYSQL中的变量名前面要使用@符号。
Call productpricing(
@pricelow,
@pricehigh,
@priceaverage
)
查询结果,在控制台打印执行存储过程后得到的 pricelow。
Select @pricelow;
如果要显示三个值。
Select @pricelow,@pricehigh,@priceaverage;
下面是创建一个带有接收和输入两个参数的存储过程
以上只是存储过程简单的使用,用原文的话来说就是,他们所能完成的工作可以直接使用这些被封装的语句完成,如果说他们还能带来更多的东西,那就是使事情更复杂。
下面将建立一个或许真正能派上用场的智能存储过程
该存储过程定义了,两个行参一个返回值。
使用declare声明了两个局部变量。
接着一条SQL查询指定订单下所有商品的总金额,赋值给了局部变量。
接着 if 判断,形参 taxrete (不为零则条件成立,加税并将 total赋值给 返回值ototal)
斯巴拉西
下面是官方的分析
使用该存储过程。
Call ordertotal(2021,0,@total);
Select @total; # 伪数值149.87
Call ordertotal(2021,1,@total);
Select @total; # 加税后 158.86
手机编辑不方便,之后在把代码放进代码块中