《mysql必知必会》读书笔记--存储过程的使用

本文介绍了MySQL存储过程的基础知识,包括创建、执行、删除存储过程的方法,并通过实例展示了如何使用存储过程参数实现更复杂的功能。

以前对mysql的认识与应用只是停留在增删改查的阶段,最近正好在学习mysql相关内容,看了一本书叫做《MySQL必知必会》,看了之后对MySQL的高级用法有了一定的了解。以下内容只当读书笔记。

如有转载请注明出处~

存储过程的使用

执行存储过程

CALL productpricing()

  执行名为productpricing的存储过程

创建存储过程

CREATE PROCEDURE productpricing()
BEGIN
SELECT avg(prod_price) AS priceaverage
FROM products;
END;

  注意:如果使用mysql的命令行程序,";"是分隔符,存储过程中也有";"这样会造成使用存储过程中的SQL出现语法错误,解决办法是临时更改语句的分隔符:

DELIMITER //
....
DELIMITER ;

  其中,除了\ 之外,任何字符都可以用作语句分隔符

删除存储过程

DROP PROCEDURE productpring;

  只是给出存储过程的名字,不用跟()

存储过程参数的使用

--创建存储过程
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(234567, @total)
--显示结果
SELECT @total

智能存储过程 

  前面的存储过程只是为了解及学习使用,实际应用中的存储过程不是像上面的一样简单。如下是一较为复杂的存储过程:

-- 创建一个名为ordertotal的存储过程
-- 参数:onumber-订单号 taxable-是否上税(0,不需要 1,需要) ototal-返回的合计
CREATE PROCECURE ordertotal(
IN onumber INT,
IN taxable BOOLEAN,
OUT ototal DECIMAL(8,2)
) COMMENT 'Obtain order total, optionally adding tax'
BEGIN
-- 定义临时变量total-存储查询到的合计
DECLARE total DECIMAL(8,2)
-- 临时变量taxrate-税点
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;

 

转载于:https://www.cnblogs.com/wulaa/p/7768069.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值