SQL 存储过程
什么是存储过程?
存储过程是您可以保存的准备好的SQL代码,因此代码可以反复重用。
如果您有一个反复编写的SQL查询,请将其另存为存储过程,然后调用来执行它。
您还可以将参数传递给存储过程,以便存储过程可以根据传递的参数值进行操作。
存储过程语法
CREATE PROCEDURE procedure_name AS sql_statement GO;
执行存储过程
EXEC procedure_name;
演示数据库
以下是Northwind示例数据库中“Customers”表的选择:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constituciуn 2222 | Mйxico D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquerнa | Antonio Moreno | Mataderos 2312 | Mйxico D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbkцp | Christina Berglund | Berguvsvдgen 8 | Luleе | S-958 22 | Sweden |
存储过程实例
以下SQL语句创建名为“SelectAllCustomers”的存储过程,该存储过程从“Customers”表中选择所有记录:
实例
CREATE PROCEDURE SelectAllCustomers AS SELECT * FROM Customers GO;
执行上面的存储过程如下:
实例
EXEC SelectAllCustomers;
带一个参数的存储过程
以下SQL语句创建一个存储过程,从“Customers”表中查询指定的City:
实例
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30) AS SELECT * FROM Customers WHERE City = @City GO;
执行上面的存储过程如下:
实例
EXEC SelectAllCustomers City = "London";
多参数存储过程
设置多个参数非常简单。只需列出每个参数和用逗号分隔的数据类型,如下所示。
以下SQL语句创建一个存储过程,该过程从“Customers”表中查询指定的PostalCode和指定的City:
实例
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10) AS SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode GO;
执行上面的存储过程如下:
实例
EXEC SelectAllCustomers City = "London", PostalCode = "WA1 1DP";