SQL SQL Server 儲存過程
什麼是儲存過程?
儲存過程是預先準備好的 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”表中選擇特定城市的客戶
示例
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO;
如下執行上面的儲存過程
示例
EXEC SelectAllCustomers @City = 'London';
帶多個引數的儲存過程
設定多個引數非常簡單。只需列出每個引數和資料型別,用逗號分隔,如下所示。
以下 SQL 語句建立一個儲存過程,該過程從“Customers”表中選擇特定城市和特定郵政編碼的客戶
示例
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';