SQL 存储过程
什么是存储过程?
存储过程是您可以保存的准备好的SQL代码,因此代码可以反复重用。
如果您有一个反复编写的SQL查询,请将其另存为存储过程,然后调用来执行它。
您还可以将参数传递给存储过程,以便存储过程可以根据传递的参数值进行操作。
存储过程语法
CREATE PROCEDURE procedure_name
AS
sql_statement
GO;
执行存储过程
演示数据库
以下是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";