ストアド プロシージャの作成
適用対象: SQL Server Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
このトピックでは、SQL Server Management Studio および Transact-SQL の CREATE PROCEDURE ステートメントを使用して、Transact-SQL ストアド プロシージャを作成する方法について説明します。
アクセス許可
データベースの CREATE PROCEDURE 権限と、プロシージャを作成するスキーマに対する ALTER 権限が必要です。
ストアド プロシージャを作成する方法
次のいずれかを使用します。
SQL Server Management Studio を使用する
オブジェクト エクスプローラーでプロシージャを作成するには
オブジェクト エクスプローラーで、 データベース エンジン のインスタンスに接続し、そのインスタンスを展開します。
[データベース] を展開し、
AdventureWorks2019
データベースを展開して、 [プログラミング] を展開します。[ストアド プロシージャ] を右クリックし、 [新しいストアド プロシージャ] をクリックします。
[クエリ] メニューの [テンプレート パラメーターの値の指定] をクリックします。
[テンプレート パラメーターの値の指定] ダイアログ ボックスで、各パラメーターに次の値を入力します。
パラメーター 値 Author 名前 Create 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