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,必须使用 `括起来

