procedure存储过程相关 ##################### 一.创建存储过程:: create procedure sp_name() begin ......... end 二.调用存储过程:: call sp_name() 注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递 三.删除存储过程:: drop procedure sp_name// 不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 四.其他常用命令:: 1.show procedure status 2.show create procedure sp_name 常见问题:: 存储过程有;号,在sql执行时遇到;号就会执行 解决办法: DELIMITER // #设定出现//才执行 然后再在命令行时写入procedure代码 最后输入“//”后procedure就生成了 DELIMITER ; #还原设定 call proc(xxx) 实例 ----- 创建带参数的存储过程:: CREATE PROCUDURE productpricing( OUT p1 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; //DECIMAL用于指定参数的数据类型 //OUT用于表明此值是用于从存储过程里输出的 //MySQL支持 OUT, IN, INOUT 调用带参数的存储过程:: CALL productpricing(@pricelow, @pricehigh, @priceaverage); //所有的参数必须以@开头 //想获取@priceaverage等的值 SELECT @priceaverage, @pricelow, @priceaverage; // 另一个带IN和OUT参数的存储过程 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;