ストアド プロシージャの作成Create a Stored Procedure

適用対象: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

このトピックでは、 Transact-SQLTransact-SQL および SQL Server Management StudioSQL Server Management Studio の CREATE PROCEDURE ステートメントを使用して、 Transact-SQLTransact-SQL ストアド プロシージャを作成する方法について説明します。This topic describes how to create a Transact-SQLTransact-SQL stored procedure by using SQL Server Management StudioSQL Server Management Studio and by using the Transact-SQLTransact-SQL CREATE PROCEDURE statement.

PermissionsPermissions

データベースの CREATE PROCEDURE 権限と、プロシージャを作成するスキーマに対する ALTER 権限が必要です。Requires CREATE PROCEDURE permission in the database and ALTER permission on the schema in which the procedure is being created.

ストアド プロシージャを作成する方法How to Create a Stored Procedure

次のいずれかを使用します。You can use one of the following:

SQL Server Management Studio の使用Using SQL Server Management Studio

オブジェクト エクスプローラーでプロシージャを作成するにはTo create a procedure in Object Explorer

  1. オブジェクト エクスプローラーで、 データベース エンジンDatabase Engine のインスタンスに接続し、そのインスタンスを展開します。In Object Explorer, connect to an instance of データベース エンジンDatabase Engine and then expand that instance.

  2. [データベース] を展開し、 AdventureWorks2012AdventureWorks2012 データベースを展開して、 [プログラミング] を展開します。Expand Databases, expand the AdventureWorks2012AdventureWorks2012 database, and then expand Programmability.

  3. [ストアド プロシージャ] を右クリックし、 [新しいストアド プロシージャ] をクリックします。Right-click Stored Procedures, and then click New Stored Procedure.

  4. [クエリ] メニューの [テンプレート パラメーターの値の指定] をクリックします。On the Query menu, click Specify Values for Template Parameters.

  5. [テンプレート パラメーターの値の指定] ダイアログ ボックスで、各パラメーターに次の値を入力します。In the Specify Values for Template Parameters dialog box, enter the following values for the parameters shown.

    パラメーターParameter [値]Value
    AuthorAuthor 名前Your name
    Create DateCreate Date 今日の日付Today's date
    [説明]Description 従業員のデータが返されます。Returns employee data.
    [Procedure_name]Procedure_name HumanResources.uspGetEmployeesTestHumanResources.uspGetEmployeesTest
    @Param1 @LastName
    @Datatype_For_Param1 nvarchar(50)nvarchar(50)
    [Default_Value_For_Param1]Default_Value_For_Param1 NULLNULL
    @Param2 @FirstName
    @Datatype_For_Param2 nvarchar(50)nvarchar(50)
    [Default_Value_For_Param2]Default_Value_For_Param2 NULLNULL
  6. [OK] をクリックします。Click OK.

  7. クエリ エディターで、SELECT ステートメントを次のステートメントに置き換えます。In the Query Editor, replace the SELECT statement with the following statement:

    SELECT FirstName, LastName, Department  
    FROM HumanResources.vEmployeeDepartmentHistory  
    WHERE FirstName = @FirstName AND LastName = @LastName  
        AND EndDate IS NULL;  
    
  8. 構文をテストするには、 [クエリ] メニューの [解析] をクリックします。To test the syntax, on the Query menu, click Parse. エラー メッセージが返された場合は、ステートメントと上記の情報を比較し、必要に応じて修正します。If an error message is returned, compare the statements with the information above and correct as needed.

  9. ストアド プロシージャを作成するには、 [クエリ] メニューの [実行] をクリックします。To create the procedure, from the Query menu, click Execute. プロシージャがデータベース内のオブジェクトとして作成されます。The procedure is created as an object in the database.

  10. オブジェクト エクスプローラーにリストされたプロシージャを確認するには、 [ストアド プロシージャ] を右クリックして [更新] を選択します。To see the procedure listed in Object Explorer, right-click Stored Procedures and select Refresh.

  11. プロシージャを実行するには、オブジェクト エクスプローラーでストアド プロシージャ名 HumanResources.uspGetEmployeesTest を右クリックし、 [ストアド プロシージャの実行] を選択します。To run the procedure, in Object Explorer, right-click the stored procedure name HumanResources.uspGetEmployeesTest and select Execute Stored Procedure.

  12. [プロシージャの実行] ウィンドウでパラメーター @LastName の値に「Margheim」を、パラメーター @FirstName の値に「Diane」を入力します。In the Execute Procedure window, enter Margheim as the value for the parameter @LastName and enter the value Diane as the value for the parameter @FirstName.

警告

すべてのユーザー入力を検証します。Validate all user input. ユーザー入力は検証するまで連結しないでください。Do not concatenate user input before you validate it. 検証していないユーザー入力から作成されたコマンドは、絶対に実行しないでください。Never execute a command constructed from unvalidated user input.

Transact-SQL の使用Using Transact-SQL

クエリ エディターでプロシージャを作成するにはTo create a procedure in Query Editor

  1. オブジェクト エクスプローラーで、 データベース エンジンDatabase Engineのインスタンスに接続します。In Object Explorer, connect to an instance of データベース エンジンDatabase Engine.

  2. [ファイル] メニューの [新しいクエリ] をクリックします。From the File menu, click New Query.

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。Copy and paste the following example into the query window and click Execute. この例では、上と同じストアド プロシージャを別のプロシージャ名で作成します。This example creates the same stored procedure as above using a different procedure name.

    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  
    
    
  4. プロシージャを実行するには、次の例をコピーして新しいクエリ ウィンドウに貼り付け、 [実行] をクリックします。To run the procedure, copy and paste the following example into a new query window and click Execute. パラメーター値を指定するときに別の方法が表示されることに注意してください。Notice that different methods of specifying the parameter values are shown.

    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  
    
    

参照See Also

CREATE PROCEDURE (Transact-SQL)CREATE PROCEDURE (Transact-SQL)