SQL 存储过程

在 SQL 中,存储过程是一组执行某些已定义操作的语句。我们创建存储过程是为了能够重用经常使用的语句。

因此,存储过程类似于编程中的函数。它们可以在我们调用它们时执行指定的事务。


创建过程

我们使用 `CREATE PROCEDURE` 命令后跟 SQL 命令来创建存储过程。例如:

SQL Server

CREATE PROCEDURE us_customers AS
SELECT customer_id, first_name
FROM Customers
WHERE Country = 'USA';

PostgreSQL

CREATE PROCEDURE us_customers ()
LANGUAGE SQL
AS $$
SELECT customer_id, first_name
FROM Customers
WHERE Country = 'USA';
$$;

MySQL

DELIMITER //
CREATE PROCEDURE us_customers ()
BEGIN
SELECT customer_id, first_name
FROM Customers
WHERE Country = 'USA';
END //
DELIMITER ;

Oracle

CREATE PROCEDURE us_customers
AS res SYS_REFCURSOR;  
BEGIN
open res for
SELECT customer_id, first_name
FROM Customers
WHERE country = 'USA';
DBMS_SQL.RETURN_RESULT(res);
END;

上面的命令在各种 DBMS 中创建了一个名为 `us_customers` 的存储过程。此过程从 `Customers` 表中选择居住在 **USA** 的客户的 `customer_id` 和 `first_name` 列。


执行存储过程

现在,每当我们想获取所有居住在美国的客户时,都可以简单地调用上面提到的过程。例如:

SQL Server, Oracle

EXEC us_customers;

PostgreSQL, MySQL

CALL us_customers();

删除过程

我们可以使用 `DROP PROCEDURE` 命令删除存储过程。例如:

SQL Server, PostgreSQL, MySQL

DROP PROCEDURE us_customers;

在这里,SQL 命令删除了我们之前创建的 `us_customers` 过程。


推荐阅读: SQL 参数化过程

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战