ストアド プロシージャの作成
このトピックでは、SQL Server Management Studio および Transact-SQL の CREATE PROCEDURE ステートメントを使用して、Transact-SQL ストアド プロシージャを作成する方法について説明します。
作業を開始する準備: 権限
プロシージャの作成に使用するもの: SQL Server Management Studio、Transact-SQL
権限
データベースの CREATE PROCEDURE 権限と、プロシージャを作成するスキーマに対する ALTER 権限が必要です。
ストアド プロシージャを作成する方法
次のいずれかを使用します。
SQL Server Management Studio
Transact-SQL
SQL Server Management Studio の使用
オブジェクト エクスプローラーでプロシージャを作成するには
オブジェクト エクスプローラーで、データベース エンジン のインスタンスに接続し、そのインスタンスを展開します。
[データベース] を展開し、 AdventureWorks2012 データベースを展開して、[プログラミング] を展開します。
[ストアド プロシージャ] を右クリックし、[新しいストアド プロシージャ] をクリックします。
[クエリ] メニューの [テンプレート パラメーターの値の指定] をクリックします。
[テンプレート パラメーターの値の指定] ダイアログ ボックスで、各パラメーターに次の値を入力します。
パラメーター
値
作成者
Your name
Create Date
Today's date
説明
従業員のデータが返されます。
[Procedure_name]
HumanResources.uspGetEmployeesTest
[@Param1]
@LastName
[@Datatype_For_Param1]
nvarchar(50)
[Default_Value_For_Param1]
NULL
[@Param2]
@FirstName
[@Datatype_For_Param2]
nvarchar(50)
[Default_Value_For_Param2]
NULL
[OK] をクリックします。
クエリ エディターで、SELECT ステートメントを次のステートメントに置き換えます。
SELECT FirstName, LastName, Department FROM HumanResources.vEmployeeDepartmentHistory WHERE FirstName = @FirstName AND LastName = @LastName AND EndDate IS NULL;
構文をテストするには、[クエリ] メニューの [解析] をクリックします。 エラー メッセージが返された場合は、ステートメントと上記の情報を比較し、必要に応じて修正します。
ストアド プロシージャを作成するには、[クエリ] メニューの [実行] をクリックします。 プロシージャがデータベース内のオブジェクトとして作成されます。
オブジェクト エクスプローラーにリストされたプロシージャを確認するには、[ストアド プロシージャ] を右クリックして [更新] を選択します。
プロシージャを実行するには、オブジェクト エクスプローラーでストアド プロシージャ名 HumanResources.uspGetEmployeesTest を右クリックし、[ストアド プロシージャの実行] を選択します。
[プロシージャの実行] ウィンドウでパラメーター @LastName の値に Margheim を、パラメーター @FirstName の値に Diane を入力します。
注意 |
---|
すべてのユーザー入力を検証します。 ユーザー入力は検証するまで連結しないでください。 検証していないユーザー入力から作成されたコマンドは、絶対に実行しないでください。 |
[先頭に戻る]
Transact-SQL の使用
クエリ エディターでプロシージャを作成するには
オブジェクト エクスプローラーでデータベース エンジンのインスタンスに接続します。
[ファイル] メニューの [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 この例では、上と同じストアド プロシージャを別のプロシージャ名で作成します。
USE AdventureWorks2012; GO CREATE PROCEDURE HumanResources.uspGetEmployeesTest2 @LastName nvarchar(50), @FirstName nvarchar(50) AS SET NOCOUNT ON; SELECT FirstName, LastName, Department FROM HumanResources.vEmployeeDepartmentHistory WHERE FirstName = @FirstName AND LastName = @LastName AND EndDate IS NULL; GO
プロシージャを実行するには、次の例をコピーして新しいクエリ ウィンドウに貼り付け、[実行] をクリックします。 パラメーター値を指定するときに別の方法が表示されることに注意してください。
EXECUTE HumanResources.uspGetEmployeesTest2 N'Ackerman', N'Pilar'; -- Or EXEC HumanResources.uspGetEmployeesTest2 @LastName = N'Ackerman', @FirstName = N'Pilar'; GO -- Or EXECUTE HumanResources.uspGetEmployeesTest2 @FirstName = N'Pilar', @LastName = N'Ackerman'; GO
[先頭に戻る]