SQLServerの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」テーブルから特定のPostalCodeを使用して、特定の都市から顧客を選択するストアドプロシージャを作成します。
例
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';