摘要:在本教程中,您将逐步学习如何通过 MySQL CREATE PROCEDURE
语句创建新的存储过程。
MySQL CREATE PROCEDURE
语句
此查询返回示例数据库中products
表中的所有产品。
SELECT * FROM products;
Code language: SQL (Structured Query Language) (sql)
以下语句创建一个包装查询的新存储过程:
DELIMITER //
CREATE PROCEDURE GetAllProducts()
BEGIN
SELECT * FROM products;
END //
DELIMITER ;
Code language: SQL (Structured Query Language) (sql)
要执行这些语句:
首先,启动 MySQL Workbench。
其次,创建一个新的 SQL 选项卡来执行查询:
第三步,在SQL选项卡中输入语句:
第四,执行语句。请注意,您可以选择 SQL 选项卡中的所有语句(或不选择任何语句),然后单击“执行”按钮。如果一切正常,MySQL 将创建存储过程并将其保存在服务器中。
第五,通过打开“存储过程”节点检查存储过程。如果您没有看到存储过程,可以单击SCHEMAS标题旁边的“刷新”按钮:
恭喜!您已经成功创建了 MySQL 中的第一个存储过程。
让我们检查一下存储过程的语法。
第一个和最后一个DELIMITER
命令不是存储过程的一部分。第一个DELIMITER
命令将默认分隔符更改为//
,最后一个DELIMITER
命令将分隔符更改回默认分隔符分号 (;)。
要创建新的存储过程,请使用CREATE PROCEDURE
语句。
以下是CREATE PROCEDURE
语句的基本语法:
CREATE PROCEDURE procedure_name(parameter_list)
BEGIN
statements;
END //
Code language: SQL (Structured Query Language) (sql)
在这个语法中
- 首先,在
CREATE PROCEDURE
关键字后指定要创建的存储过程的名称。 - 其次,在过程名称后面的括号中指定存储过程的逗号分隔参数列表。请注意,您将在后续教程中学习如何创建带参数的存储过程。
- 第三,在
BEGIN END
块之间编写代码。上面的例子只有一个简单的SELECT
语句。在END
关键字之后,放置分隔符来结束过程语句。
执行存储过程
要执行存储过程,可以使用CALL
语句:
CALL stored_procedure_name(argument_list);
Code language: SQL (Structured Query Language) (sql)
在此语法中,您可以在CALL
关键字后指定存储过程的名称。如果存储过程有参数,则需要在存储过程名称后面的括号内传递参数。
此示例说明如何调用GetAllProducts()
存储过程:
CALL GetAllProducts();
Code language: SQL (Structured Query Language) (sql)
执行该语句与执行 SQL 语句相同:
这是部分输出:
使用 MySQL Workbench 向导创建存储过程
通过使用 MySQL Workbench 向导,您不必处理许多事情,例如分隔符或执行命令来创建存储过程。
首先,在导航器中右键单击“存储过程” ,然后选择“创建存储过程...”菜单项。
将打开以下选项卡:
其次,更改存储过程的名称并在BEGIN END
块之间添加代码:
存储过程名称为GetAllCustomers()
,它返回示例数据库中customers
表中的所有行。
第三,单击“应用”按钮,MySQL Workbench 将打开一个新窗口,用于在将 SQL 脚本应用到数据库之前查看它:
第四,单击“应用”按钮进行确认。 MySQL Workbench 将创建存储过程:
第五,单击完成按钮关闭窗口。
最后在Stored procedures列表中查看存储过程:
概括
- 使用
CREATE PROCEDURE
语句创建新的存储过程。 - 使用
CALL
语句执行存储过程。 - MySQL将存储过程存储在服务器中。