mysql之存储过程
call productpricing ( @ pricelow,
@ pricehigh,
@ priceaverage
);
CREATE PROCEDURE productpricing()
BEGIN
SELECT AVG(prod_price) AS priceaverage
FROM products;
END;
DELIMITER //
CREATE PROCEDURE productpricing()
BEGIN
SELECT AVG(prod_price) AS priceaverage
FROM products;
END //
DELIMITER ;
CALL productpricing();
结果是:
+--------------+
| priceaverage |
+--------------+
| 16.133571 |
+--------------+
DROP PROCEDURE productpricing;
DELIMITER //
CREATE PROCEDURE pricing(
OUT pl DECIMAL(8, 2),
OUT ph DECIMAL (8, 2),
OUT pa DECIMAL (8, 2),
)
BEGIN SELECT MIN (prod_price)
INTO pl
FROM productes;
SELECT MAX (prod_price)
INTO ph
FROM productes;
SELECT AVG (prod_price)
INTO pa
FROM productes; END // DELIMITER ;
CALL pricing (@pricelow, @pricehigh, @pricevarage );
SELECT @pricevarage
输出:
+--------+
| @pricevarage|
+--------+
| 55.00 |
+--------+
为了获得 3个值,可使用以下语句:
SELECT @pricelow, @pricehigh, @pricevarage ;
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(20005, @total);
SELECT @total;
输出:
+--------+
| @total |
+--------+
| 192.37|
+--------+
call ordertotal(20009, @total);
SELECT @total;
输出:
+--------+
| @total |
+--------+
| 38.47 |
+--------+
以后我们每次要通过订单号,来获得商品的总价都可以使用这个方式。是不是很有用啊。。
-- Name: ordertotal // 添加注释
-- Parameters: onumber = order number
-- taxable = 0 if not taxable, 1 if taxtable
-- ototal = order total variable CREATE PROCEDURE ordertotal (
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 tax percentage
DECLARE taxrate INT DEFAULT 6; -- Get the order total
SELECT SUM(item_price * quantity)
FROM orderitems
WHERE order_num = onumber
INTO total -- Is this taxable?
IF taxable THEN
-- Yes, so add taxrate to the total
SELECT total + (total / 100 * taxrate) INTO total;
END IF;
-- And finally, save to out variable
SELECT total INTO ototal;
END;
call ordertotal(20009, 0,@total);
SELECT @total;
输出:
+--------+
| @total |
+--------+
| 38.47 |
+--------+
第二条:
call ordertotal(20009, 1,@total);
SELECT @total;
输出:
+--------+
| @total |
+--------+
| 36.21 |
+--------+
show create procedure ordertotal;
SHOW PROCEDURE STATUS like 'ordertotal';
mysql之存储过程的更多相关文章
- MYSQL中存储过程的创建,调用及语法
MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库 ...
- MYSQL分页存储过程及事务处理
最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYS ...
- MySQL的存储过程1
来源:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html MySQL的存储过程 2. 关于MySQL的存储过程存储过程是数据库存储的一个重要的功能 ...
- Mysql的存储过程(以Mysql为例进行讲解)
我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储 在数据库中,用户通过指定存 ...
- mysql之——存储过程 + 游标 + 事务
下面是自己曾经编写过的mysql数据库存储过程,留作存档,以后用到的时候拿来参考. 其中,涉及到了存储过程.游标(双层循环).事务. [说明]:代码中的注释只针对当时业务而言,无须理会. 代码如下: ...
- MYSQL:基础—存储过程
MYSQL:基础-存储过程 快速入门 理解: 迄今为止,我们学过的大多数SQL语句都是针对一个或多个表的单条语句.但是并不是所有的操作都是可以用一条语句来完成的,经常有一些操作是需要多条语句配合才能完 ...
- MySQL笔记 存储过程 游标 触发器
第二十三章 使用存储过程 MySQL5 中添加了存储过程的支持. 大多数SQL语句都是针对一个或多个表的单条语句.并非所有的操作都怎么简单.经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就 ...
- MySQL 列出存储过程
MySQL 列出存储过程 接下来介绍如何列出MySQL数据库中的所有存储过程,并显示存储过程源代码的一些非常有用的语句. MySQL为提供了一些有用的语句,可以更有效地管理存储过程.这些语句包括列出 ...
- [转]MYSQL 创建存储过程
MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库 ...
随机推荐
- 反编译ILSpy 无法显式调用运算符或访问器 错误处理方法 转
反汇编一个dll类库,导出的项目会报出很多bug,其中主要的就是“无法显式调用运算符或访问器”这个错误,看了一下,发现问题是在调用属性的时候,都 变成了方法,例如:pivotPoint.set_X(0 ...
- 161222、Bootstrap table 服务器端分页示例
bootstrap版本 为 3.X bootstrap-table.min.css bootstrap-table-zh-CN.min.js bootstrap-table.min.js 前端boot ...
- Intel+Ardruino 101 翻转时点灯
/* =============================================== Example sketch for CurieIMU library for Intel(R ...
- android setting 设置永不休眠
默认情况下,Android系统在超过N分钟没操作,会自动关屏并进入休眠状态. 实际上,有些项目要求超时不休眠,如果只是针对单个应用程序,我们可以通过电源管理设置状态来实现, 而如果要设置所有应用的超 ...
- Checkpoint--与lazy writer区别
checkpoint目的是减少数据库的恢复时间(服务奔溃或重启服务后的恢复),而lazy writer的目的是保证SQL OS 有空闲缓存块和系统有一定可用内存. Checkpoint和lazyWri ...
- CentOS 6.5搭建PPTP VPN服务器
VPN是虚拟专用网络(Virtual Private Network)的缩写,VPN有多种分类方式,包括PPTP.L2TP.IPSec等,本文配置的VPN服务器是采用PPTP协议的,PPTP是在PPP ...
- Beaglebone Black – 智能家居控制系统 LAS - 插座组装
上一篇完成了服务端,这次是拼图的最后一块,插座. 插座一个,准备废掉它其中一个插头 预想电路草图 物料清单: 两路插座一个 继电器一个,3.3V 能驱动即可: 交流转直流 3.3V,我买了现成的模块: ...
- XAF学习资源整合大全
近期有很多XAF初学者与我联系,我多数时间在重复很多入门问题,所以决定整理一篇XAF资源列表,方便大家查找资料,也请知晓其他资源的人留言或与我联系,我将新资源追加到本篇文章中,方便更多人. 一.本博客 ...
- xshell 终端窗口目录显示为深蓝色的不易分辨问题
xshell更改终端窗口目录展示深蓝色的不易分辨 经常使用xshell远程连接服务器,使用ls命令,目录的颜色都是深蓝色, 如果终端窗口背景颜色是黑色的(对眼睛较好的黑色的背景色,大家一般都选择黑色背 ...
- LTE Module User Documentation(翻译7)——无线环境地图(REM)、AMC 模型 和 CQI 计算
LTE用户文档 (如有不当的地方,欢迎指正!) 12 Radio Environment Maps 通过使用类 RadioEnvironmentMapHelper 是可能输出文件 Radio E ...