MySQL 存储过程
时间:2019-02-04 12:52:32 来源:igfitidea点击:
什么是存储过程?
在MySQL中,过程是一个可以传递参数的存储程序。它不像函数那样返回值。
创建存储过程
语法
在MySQL中创建过程的语法为:
CREATE PROCEDURE procedure_name [ (parameter datatype [, parameter datatype]) ] BEGIN declaration_section executable_section END;
参数 | 说明 |
---|---|
procedure_name | 存储过程名称 |
parameter | 可选的。传递给存储过程的一个或多个参数。 参数可以是 IN ,OUT 和IN OUT三种类型 |
declaration_section | 存储过程中进行局部变量声明的地方。 |
executable_section | 存储过程代码 |
MySQL 存储过程示例
在MySQL中创建过程的示例:
DELIMITER // CREATE PROCEDURE `CustOrdersOrders`(in AtCustomerID varchar(5)) BEGIN SELECT OrderID, OrderDate, RequiredDate, ShippedDate FROM Orders WHERE CustomerID = AtCustomerID ORDER BY OrderID; END; // DELIMITER ;
示例2,存储过程也可以通过变量引用返回结果值
DELIMITER // CREATE PROCEDURE `CustOrdersCount`(in AtCustomerID varchar(5), OUT count_num INT) BEGIN DECLARE _id varchar(5); DECLARE _res INT; SET _id = AtCustomerID; SET _res = 3; SELECT count(OrderID) INTO _res FROM Orders WHERE CustomerID = _id ORDER BY OrderID; SET count_num = _res; END; // DELIMITER ;
如何调用存储过程:
call CustOrdersOrders('QUICK');
call CustOrdersCount('QUICK', @variable_name ); SELECT @variable_name;
删除存储过程
在MySQL中创建过程后,您可能会发现需要将其从数据库中删除。
语法
在MySQL中删除过程的语法是:
DROP procedure [ IF EXISTS ] procedure_name;
procedure_name为要删除的存储过程名称
示例
如何在MySQL中删除过程:
DROP PROCEDURE IF EXISTS CustOrdersOrders; DROP PROCEDURE IF EXISTS `CustOrdersCount`;
如果存储过程名字有空格 例如 Sales by Year,必须使用 `括起来