「ストアド プロシージャ」とは何ですか? また、どのように機能しますか?
ストアド プロシージャの構成 (ストアド プロシージャになるために必要なもの) は何ですか?
ベストアンサー1
ストアド プロシージャは、いくつかの方法で実行できる一連の SQL ステートメントです。ほとんどの主要な DBM はストアド プロシージャをサポートしていますが、すべてをサポートしているわけではありません。詳細については、特定の DBMS ヘルプ ドキュメントで確認する必要があります。私は 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
ストアド プロシージャの利点は、データ アクセス ロジックを 1 か所に集中化できるため、DBA が簡単に最適化できることです。また、ストアド プロシージャには、ストアド プロシージャに実行権限を付与できるというセキュリティ上の利点もありますが、ユーザーは基礎となるテーブルに対する読み取り/書き込み権限を持つ必要はありません。これは、SQL インジェクションに対する最初のステップとして有効です。
ストアドプロシージャには欠点もあります。基本的には、基本的なメンテナンスに関連するものです。CRUD操作。各テーブルに挿入、更新、削除、および主キーに基づく少なくとも 1 つの選択があるとすると、各テーブルには 4 つのプロシージャがあることになります。400 個のテーブルがある適切なサイズのデータベースの場合、プロシージャは 1600 個になります。これは、重複がないことを前提としていますが、おそらく重複があるでしょう。
ここで、ORMまたは、基本的な CRUD 操作を自動生成する他の方法には、多くのメリットがあります。