[MYSQL -23存储过程]
来源:互联网 发布:淘宝天猫活动大全 编辑:程序博客网 时间:2024/06/05 09:04
存储过程:为以后的使用而保存的一条或多条MYSQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。
使用存储过程的理由:
- 通过处理封装在容易使用的单元中,简化复杂的操作。
- 保证数据的完整性
- 简化对变动的管理
- 提高性能。存储过程比单独的SQL语句要快。
总结起来,3个主要好处:简单、安全、高性能
1、使用存储过程
MySQL存储过程的执行称之为调用,因此MySQL执行存储过程的语句为CALL.
CALL 接收存储过程的名字以及需要传递给它的任意参数。
1.1创建存储过程
#productpricing为存储过程名称。#DELIMITER //告诉命令行实用程序使用//作为新的语句结束分隔符。DELIMITER //CREATE PROCEDURE productpricing()BEGIN SELECT avg(prod_price) as priceaverage FROM products;END //DELIMITER ;
1.2执行存储过程。
因为存储过程实际上是一种函数,所以存储过程名后需要有()符号。
CALL productpricing()
1.3删除存储过程
DROP PROCEDURE productpricing;
1.4使用参数
存储过程一般不显示结果,而是把结果返回给你指定的变量。
变量:内存中一个特定的位置,用来存储临时的数据。所有MYSQL变量都必须以@开始。
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 //DELIMITER ;
此存储过程接受3个参数:p1存储产品的最低价,ph存储产品的最高价,pa存储产品的平均价。MYSQL支持IN(传递给存储过程)、OUT(从存储过程传出,返回给调用者)
- 调用存储过程
CALL productpricing(@pricelow, @pricehigh, @priceaverage );
- 显示检索出的产品平均价。
SELECT @priceaverage;
- 另一个实例,变量包括IN,OUT。
DELIMITER //CREATE procedure ordertotal( IN onumber INT, OUT ototal DECIMAL(8,2) ) BEGIN SELECT Sum(item_price*quantity) INTO ototal FROM orderitems WHERE order_num=onumber; END //DELIMITER ;CALL ordertotal(20005,@total);SELECT @total;
3、智能存储过程
DELIMITER //CREATE PROCEDURE ordertotal2( IN onumber INT, IN taxable BOOLEAN, OUT ototal DECIMAL(8,2) )COMMENT 'Obtain order total,optionally adding tax' BEGIN -- Declare variable for total DECLARE total DECIMAL(8,2); -- Declare taxrate INDEFUALT 6; DECLARE taxrate INT DEFAULT 6; SELECT Sum(item_price*quantity) FROM orderitems WHERE order_num = onumber INTO total; IF taxable THEN SELECT total+(total/100*taxrate) INTO total; END IF; SELECT total INTO ototal; END //DELIMITER ;CALL ordertotal2(20005,0,@total);select @total;CALL ordertotal2(20005,1,@total);select @total;
4、检查存储过程
SHOW CREATE PROCEDURE ordertotal2;SHOW PROCEDURE STATUS;
阅读全文
0 0
- [MYSQL -23存储过程]
- 【mysql】mysql存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- 顺序表应用2:多余元素删除之建表算法
- MacOS下mysql的卸载、重装和root密码重置
- MVPArms MVP+Dagger+Rxjava+Retrofit快速集成框架
- 批量将pdf转换为eps
- vue-cli 下拉select
- [MYSQL -23存储过程]
- 如何将同一云服务下的虚拟机从经典部署模型迁移到 Azure Resource Manager
- 面试小结<二>:ZTE/CVTE/JD
- 33
- JSON转化为java对象
- SpringCloud: 高可用的分布式配置中心(Spring Cloud Config)
- js基础知识总结
- 删除文件或目录工具类
- 使用drawRect有什么影响?