ビューとストアド プロシージャの作成
Mary が TestData データベースにアクセスできるようになったので、ビューやストアド プロシージャのようなデータベース オブジェクトを作成し、Mary にこれらのオブジェクトへのアクセス権を付与できます。ビューは、格納された SELECT ステートメントで、ストアド プロシージャは、バッチとして実行される 1 つ以上の Transact-SQL ステートメントです。
ビューに対しては、テーブルと同じようにクエリが実行されます。パラメータは使用できません。ストアド プロシージャは、ビューよりも複雑です。ストアド プロシージャは、入力と出力のパラメータを指定でき、IF ステートメントや WHILE ステートメントなどの、コードの流れを制御するステートメントを含めることができます。データベース内でのすべての繰り返し操作には、ストアド プロシージャを使用することをお勧めします。
この例では、CREATE VIEW を使用して、Products テーブル内の 2 つの列だけを選択するビューを作成します。次に、CREATE PROCEDURE を使用して、価格のパラメータを受け入れ、指定されたパラメータ値よりも価格が安い製品のみを返すストアド プロシージャを作成します。
ビューを作成するには
次のステートメントを実行して、SELECT ステートメントを実行する非常に単純なビューを作成し、製品の名前と価格をユーザーに返します。
CREATE VIEW vw_Names AS SELECT ProductName, Price FROM Products; GO
ビューのテスト
ビューはテーブルと同じように処理されます。ビューにアクセスするには SELECT ステートメントを使用します。
SELECT * FROM vw_Names; GO
ストアド プロシージャを作成するには
次のステートメントでは、pr_Names という名前のストアド プロシージャを作成し、@VarPrice という名前の、money データ型の入力パラメータを受け入れます。このストアド プロシージャによって、money データ型から varchar(10) 文字データ型に変更される入力パラメータと連結されるステートメント Products less than が出力されます。次に、ビューに対して SELECT ステートメントが実行され、WHERE 句の一部として入力パラメータが渡されます。これによって、入力パラメータ値よりも価格が安い製品がすべて返されます。
CREATE PROCEDURE pr_Names @VarPrice money AS BEGIN -- The print statement returns text to the user PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10)); -- A second statement starts here SELECT ProductName, Price FROM vw_Names WHERE Price < @varPrice; END GO
ストアド プロシージャのテスト
ストアド プロシージャをテストするには、次のステートメントを入力して実行します。このプロシージャによって、レッスン 1 で Products テーブルに入力した、価格が 10.00 より安い 2 つの製品の名前が返されます。
EXECUTE pr_Names 10.00; GO