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文は、”Customers” テーブルからすべてのレコードを選択する “SelectAllCustomers” という名前のストアドプロシージャを作成します:
CREATE PROCEDURE SelectAllCustomers
AS
SELECT * FROM Customers
GO;
上記のストアドプロシージャは以下のように実行します:
EXEC SelectAllCustomers;
1つのパラメータを持つストアドプロシージャ
以下の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';