跳到主要内容

SQL存储过程

提示
  1. 定义存储过程:SQL中的存储过程是一组定义好的SQL语句集,用于执行特定的操作。它类似于编程中的函数,可被重复调用。
  2. 创建过程语法:创建存储过程使用CREATE PROCEDURE语句,其语法在不同的数据库管理系统(如SQL Server、PostgreSQL、MySQL、Oracle)中略有不同。
  3. 执行与删除:执行存储过程使用EXEC(SQL Server, Oracle)或CALL(PostgreSQL, MySQL)命令。存储过程可以通过DROP PROCEDURE命令进行删除。

在 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;

上述命令在各个数据库管理系统中创建了一个名为 us_customers 的存储过程。此过程选择了 Customers 表中居住在 美国 的客户的 customer_idfirst_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 参数化过程