在项目开发中一般来说web项目很少用到存储过程,因为单线程执行的模块应用很少需要数据库表提供存储过程的(个人观点,不喜勿喷哈哈~),虽然web开发人员不常用,但是有些特殊生产场景还是非常有用的,比如平台上执行相同的函数、封装特殊功能等。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。本次教大家如何创建爱你mysql存储过程。
1、创建存储过程
mysql> create procedure 过程名([in|out|inout] [变量名] [变量类型])
-> begin
-> ...
-> end;
DELIMITER //
CREATE PROCEDURE myproc(OUT s int)
BEGIN
SELECT COUNT(*) INTO s FROM students;
END
//
DELIMITER ;
2.分隔符
MySQL默认以";"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。
3.参数:
IN:传递给存储过程
OUT:从存储过程中传出
INOUT:对存储过程传入和传出
4.调用存储过程
call 存储过程名([@变量1,@变量2...]);
select @变量1;
5.建立智能存储过程
--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 taxable BOLLEAN,
OUT ototal DEMCIAL(8,2)
)COMMENT 'Obtain order total,optionlly adding tax'
BEGIN
--Declare variable for total
DECLARE total DEMCIAL(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) TNTO total;
END IF;
--And finally,save to out variable
SELECT total INTO ototal;
END;
多谢博主分享,博主好人!!!
多谢大神分享mysql的存储过程,确定可行。