mysql使用存储过程用法_MySQL使用存储过程

存储过程简单来说,就是为了以后的使用而保存的一条或多条MySQL语句的集合。

为什么使用存储过程

通过把处理封装在容易使用的单元中,简化复杂的操作

由于不要求反复建立一系列处理步骤,这保证了数据的完整性。如果所有开发人员和应用程序都使用同一存储过程,则所使用的代码都是相同的。 这一点延伸就是防止错误。需要执行的步骤越多,出错的可能性就越大。防止错误保证了数据的一致性。

简化对变动的管理。如果表名、列名或业务逻辑有变化,只需要更改存储过程的代码。使用它的人员甚至不需要这些变化。 这一点的延伸就是安全性。通过存储过程限制对基础数据的访问,减少了数据讹误的机会。

提高性能。因为使用存储过程比使用单独的SQL语句要快。

存在一些只能用在单个请求中的MySQL元素和特性,存储过程可以使用他们来编写功能更强更灵活的代码。

使用存储过程

创建存储过程

使用 CREATE PROCEDURE定义存储过程。如果存储过程接受参数,它们将在存储过程名称括号中列举出来。BEGIN和END语句来限定存储过程体。

//默认的MySQL命令行分隔符是; "DELIMITER //"告诉命令行实用程序使用"//"作为新的语法结束分隔符。

DELIMITER //

CREATE PROCEDURE productpricing()

BEGIN

SELECT Avg(prod_price) AS priceaverage

FROM products;

END //

使用

CALL productpricing();

删除存储过程

DROP PROCEDURE productpricing;

使用参数

变量:内存中一个特定的位置,用来临时存储数据,都必须以@开始。

参数的数据类型: 存储过程的参数允许的数据类型与表中使用的数据类型相同。记录集是不允许的类型,因此,不能通过一个参数返回多个行和列。

OUT指出相应的参数用来从存储过程传出一个值(返回给调用者),IN (传递给存储过程),INOUT(对存储过程传入传出)

通过关键字INTO将查询结果保存到相应的变量。

//定义带参数的存储过程

DELIMITER //

CREATE PROCEDURE productpricing(

OUT pl decimal(8,2),

OUT ph decimal(8,2),

OUT pa decimal(8,2)

)

BEGIN

SELECT Min(prod_price) INTO pl FROM products;

SELECT Max(prod_price) INTO ph FROM products;

SELECT Avg(prod_price) INTO pa FROM products;

END //

//调用带参数的存储过程

CALL productpricing(@pricelow,

@pricehigh,

@priceaverage

);

//显示调用结果

SELECT @pricelow,@pricehigh;

DELIMITER //

CREATE PROCEDURE ordertotal(

IN onumber int,

OUT ototal decimal(8,2)

)

BEGIN

SELECT Sum(item_price*quantity)

FROM orderitems

WHERE order_num = onumber

INTO ototal;

END //

CALL ordertotal(20009,@total);

SELECT @total;

检查存储过程

SHOW PROCEDURE STATUS;查看所有的存储过程,可使用LIKE限制

SHOW PROCEDURE STATUS LIKE 'ordertotal';

//查看创建此存储过程的语句

SHOW CREATE PROCEDURE ordertotal;

结果:

a380201d4fa2509783ceb244858f7fef.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值