1. ホーム
  2. sql

[解決済み】ストアドプロシージャとは何ですか?

2022-03-27 03:48:26

質問

とは何ですか? ストアドプロシージャ" また、どのように機能するのでしょうか?

ストアドプロシージャーの構成はどうなっているのでしょうか(モノはそれぞれ が必要です。 はストアドプロシージャでなければならないのでしょうか?)

どのように解決するのですか?

ストアドプロシージャは、いくつかの方法で実行することができるSQL文のバッチです。ほとんどの主要なDBMはストアドプロシージャをサポートしていますが、すべてのDBMがサポートしているわけではありません。しかし、すべてのDBMがサポートしているわけではありません。詳細はDBMSのヘルプドキュメントで確認する必要があります。私はSQL Serverに最も精通しているので、SQL Serverをサンプルとして使用することにします。

ストアドプロシージャを作成するための構文は非常にシンプルです。

CREATE PROCEDURE <owner>.<procedure name>

     <Param> <datatype>

AS

     <Body>

だから例えば

CREATE PROCEDURE Users_GetUserInfo

    @login nvarchar(30)=null

AS

    SELECT * from [Users]
    WHERE ISNULL(@login,login)=login

ストアドプロシージャの利点は、データアクセスロジックを一箇所に集中させることができ、DBAが最適化しやすくなることです。また、ストアドプロシージャには、実行権限を与えることができますが、そのユーザは下位のテーブルに対する読み取り/書き込み権限を持っている必要はないというセキュリティ上の利点もあります。これは、SQLインジェクション対策の第一歩として有効です。

ストアドプロシージャにはデメリットもあります。 CRUD の操作になります。例えば、各テーブルに Insert, Update, Delete と主キーに基づく select が最低1つあるとすると、各テーブルには4つのプロシージャがあることになります。400のテーブルを持つ大規模なデータベースでは、1600のプロシージャを持つことになります。これは重複がないと仮定しての話ですが、おそらく重複があるはずです。

ここで ORM などで、基本的なCRUD操作を自動生成することは、非常に大きなメリットがあります。