MySql procedure

--存储过程在MySql5后支持,用户可以在没有 定义存储过程 权限事使用存储过程。存储过程比一条条的语句快。
DELIMITER // --除\外,任何字符都可以用作语句分隔符。若没有改分隔符,则在命令行执行时,遇到;就会执行。
--Name: ordertotal
--Parameters: onumber = order number
--  taxable = 0 if not taxable, 1 if taxable
--  ototal = order total variable
CREATE PROCEDURE ordertotal( --若没有参数,则一个空括号,必须有
IN onumber INT, --IN 指明输入参数,OUT 指明输出参数,还有INOUT的输入输出参数
IN taxable BOOLEAN,
OUT ototal DECIMAL(8,2)
) COMMENT 'Obtain order total, optionally adding tax' --不是必须的,若有在SHOW PROCEDUER STATUS时会显示
BEGIN --begin end用来限制存储过程体
--局部变量total
DECLARE total DECIMAL(8,2);
--税率,局部变量可以由默认值
DECLARE taxrate INT DEFAULT 6;
--Get the order total 
--对参数和局部变量,可以直接用,不需要加@,只有在外部调用时才加@?
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;--z注意这个用法
END //
DELIMITER ;


call ordertotal(20005,0,@total);--调用过程。非0值都考虑为真,0值为假。MySql所有变量都以@开始
select @total; --可以用来显示total变量
show create procedure ordertotal;--用来显示创建procedure时的create语句
show procedure status like 'ordertotal';--查找并显示某个存储过程
drop procedure if exists ordertotal;--删除存储过程,若没有该过程且没有if exists会报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值