sql >> データベース >  >> RDS >> Sqlserver

ストアドプロシージャとは何ですか?

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

    ストアドプロシージャを作成するための構文はかなり単純です:

    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操作を自動生成することには、多くのメリットがある場合です。



    1. AWSEC2からAWSRDSへのOracleデータベースの移行、パート3

    2. SQLServerで壊れたオブジェクトを見つける

    3. PostgreSQLシステムカタログを理解して読む

    4. 構造化クエリ言語–SQL学習の重要性