1、什么是存储过程
a、存储过程就是为以后的使用而保存的一条或多条Mysql语句的集合;
b、可将存储过程看作为批处理文件。
2、为什么需要使用存储过程
a、通过把处理封装在容易使用的单元中,简化复杂操作;
b、由于不要求反复建立一系列处理步骤,这保证了数据的完整性;
c、简化对变动的管理,如果表名、列名或业务逻辑有变化,只需要更改存储过程的代码,使用他的人员甚至不需要知道这些变化;
d、提高性能:使用存储过程比使用单独的SQL语句更快
e、存在一些只能用在单个请求中的MYSQL元素和特性,存储过程可以使用他们来编写功能更强更灵活的代码
即:使用存储过程有3个主要的好处:简单、安全、高性能
3、创建存储过程
a、MYSQL 使用 CREATE PROCEDURE 语句创建存储过程
CREATE PROCEDURE productpricing()
BEGIN
SELECT Avg(prod_price) AS priceaverage
FROM products;
END;
说明: 存储过程名为:productpricing,使用CREATE PROCEDURE productpricing() 定义
如果存储过程接受参数,它们将在()中列出
BEGIN 和 END 语句用来限定存储过程体
4、临时更改MYSQL的分隔符
a、默认的mysql语句分隔符为“;”
b、Mysql命令行实用程序也使用”;“,作为语句分隔符
c、如果命令行实用程序姚解释存储过程自身内也有“;”
d、则他们最终不会成为存储过程的成分,这回使得存储过程中的SQL出现句法错误
解决办法:
临时更改命令行实用程序的语句分隔符
DELIMITER //
CREATE PROCEDURE productpricing()
BEGIN
SELECT Avg(prod_price) AS priceaverage
FROM products;
END;
DELIMITER ;
5、使用存储过程
a、方法是:call productpricing();
b、执行刚创建的存储过程并显示返回的结果
c、存储过程实际上是一种函数,所以存储过程名后面有()符号
d、查询存储过程
show procedure status where db = '数据库名';
e、删除存储过程
1) 存储过程在创建之后,被保存在服务器上以供使用,直至被删除;
2) 删除命令从服务器中删除存储过程
3) 使用以下语句删除存储过程:
DROP PROCEDURE productpricing;——删除创建的存储过程
f、使用参数与变量
1)存储过程一般并不显示结果,而是把结果返回给指定的变量
2)该变量用来临时存储数据
3)所有MYSQL 变量都必须以@开始
4)使用SET语句设置变量
如:SET @num=1;
实例1:
CREATE PROCEDURE productpricing(
OUT PL DECIMAL(8,2) ——OUT :传出参数,PL:参数,DECIMAL:是8位带有2为小数的数值
)
BEGIN
SELECT Min(prod_price)
INTO PL ——将查询的值放到PL
FROM products;
END;
实例2:
CREATE PROCEDURE ordertotal(
IN onumber INT, ——IN :传入参数
OUT ototal DECIMAL(8,2) ——OUT :传出参数,ototal:参数,DECIMAL:是8位带有2为小数的数值
)
BEGIN
SELECT Sum(item_price*quantity)
FROM orderitems
WHERE oder_num = onumber
INTO ototal
END;
调用这个存储过程:
call ordertotal(001,@total);
显示变量的值
SELECT @total;