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

SQLでストアドプロシージャを作成するにはどうすればよいですか?

    プロシージャは、データベースオブジェクトとしてデータベースに作成および保存できるサブプログラムです。他の言語と同じように、SQLでもプロシージャを作成および削除できます。この記事では、構文と例を使用してSQLの手順を調べてみましょう。

    この記事で説明されているトピックは次のとおりです。

    • SQLのプロシージャとは何ですか?
    • SQLプロシージャの構文
    • SQLの手順例
    • SQLプロシージャの利点

    SQLのプロシージャとは何ですか?

    SQLのプロシージャ(多くの場合、ストアドプロシージャと呼ばれます)は、アプリケーションの特定のビジネスロジックをカプセル化する再利用可能なユニットです。 SQLプロシージャは、SQLステートメントとロジックのグループであり、特定のタスクを実行するためにコンパイルおよび保存されます。

    以下に、SQLプロシージャの主な機能を示します。

    • 非常に単純な高レベルで強く型付けされた言語を使用しているため、実装が簡単です
    • 入力、出力、および入出力パラメーターの3種類のパラメーターをサポートします。
    • 同等の外部手順よりも信頼性が高い。
    • SQLプロシージャは、再利用性と保守性を促進します。
    • シンプルでありながら強力な条件とエラー処理モデルをサポートします。
    • ステータス値を呼び出し元のプロシージャまたはバッチに返し、成功または失敗、および失敗の理由を示します。

    プロシージャとは何か、なぜそれらが必要なのかがわかったところで、SQLのプロシージャの構文と例について説明しましょう。

    SQLのプロシージャの構文

    以下に、SQLでプロシージャを作成するための基本的な構文を示します。

    
    CREATE [ OR REPLACE] PROCEDURE procedure_name [
    (parameter_name [IN | OUT | IN OUT]  type [ ])]
    {IS | AS }
    BEGIN [declaration_section]
    executable_section 
    //SQL statement used in the stored procedure
    END
    GO
    

    構文用語

    パラメータ

    パラメータは、サブプログラムがメインコードと値を交換できる有効なSQLデータ型の値を保持する変数です。つまり、パラメータは値をプロシージャに渡すために使用されます。パラメータには次の3種類があります。

    • IN :これはデフォルトパラメータであり、呼び出し元のプログラムから常に値を受け取ります。これはサブプログラム内の読み取り専用変数であり、その値はサブプログラム内で変更できません。
    • OUT: サブプログラムから出力を取得するために使用されます。
    • インアウト: このパラメーターは、入力の提供とサブプログラムからの出力の取得の両方に使用されます。

    その他の用語

    • 手順名 プロシージャの名前を指定します。ユニークである必要があります。
    • [OR REPLACE]オプションを使用すると、既存の手順を変更できます。
    • IS | AS句では、ストアドプロシージャを実行するためのコンテキストを設定します。違いは、プロシージャが他のブロックにネストされている場合はキーワード「IS」が使用され、プロシージャがスタンドアロンの場合は「AS」が使用されることです。
    • Code_Blockは、ストアドプロシージャ内のすべての処理を処理するプロシージャステートメントを宣言します。 code_blockの内容は、データベースで使用されるルールと手続き型言語によって異なります。

    SQLの手順:例

    例1

    次の例では、実行時にウェルカムメッセージを画面に表示する簡単な手順を作成します。次に、手順は次のようになります。

    CREATE OR REPLACE PROCEDURE welcome_msg
    (para1_name IN VARCHAR2)
    IS 
    BEGIN 
        dbms_output.put_line (‘Hello World! '|| para1_name);
    END; 
    /

    ストアドプロシージャを実行します。スタンドアロンプ​​ロシージャは2つの方法で呼び出すことができます-

    • EXECUTEの使用 キーワード
    • SQLブロックからプロシージャの名前を呼び出す

    上記のプロシージャは、次のようにExecuteキーワードを使用して呼び出すことができます。

     EXEC welcome_msg (‘Welcome to Edureka!’);

    出力

    Hello World! Welcome to Edureka 

    手順が実行され、メッセージが「Hello World!エドゥレカへようこそ」。

    例2

    EmployeId、Firstname、Lastname、DepartmentDetailsなどのEmplyoeeの詳細を含むテーブルがあるとします。

    この例では、 EmployeIdのときに従業員名を返すSQLプロシージャを作成します。 ストアドプロシージャへの入力パラメータとして指定されます。次に、手順は次のようになります。

    Create  PROCEDURE GetStudentName 
    (
    @employeeID INT,                       --Input parameter ,  employeID of the employee
    @employeName VARCHAR(50)  OUT  --Output parameter, employeeName of employee
    AS
    BEGIN
    SELECT @employeName= Firstname+' '+Lastname FROM Employee_Table WHERE EmployeId=@employeID
    END

    実行手順:

    • @employeNameをnvarchar(50)として宣言します
    • EXEC GetStudentName 01、@employeName出力
    • @employeNameを選択

    入力として従業員IDを指定する上記の手順では、その特定の従業員の名前が返されます。出力パラメーターがある場合、最初に変数を宣言して出力値を収集する必要があるとします。それでは、SQLのプロシージャの利点を確認しましょう。

    SQLのプロシージャの利点

    SQLのストアドプロシージャの主な目的は、コードから直接SQLクエリを非表示にし、データの選択、更新、削除などのデータベース操作のパフォーマンスを向上させることです。 SQLのプロシージャのその他の利点は次のとおりです。

    • データベースサーバーに送信される情報の量を減らします。ネットワークの帯域幅が狭い場合は、より重要なメリットになる可能性があります。
    • コードの再利用性を有効にします
    • ストアドプロシージャで使用されるテーブルにアクセス許可を与える代わりに、ユーザーにストアドプロシージャを実行するためのアクセス許可を付与できるため、セキュリティが強化されます。
    • 他のSQLプロシージャまたは他の言語で実装されたプロシージャへのネストされたプロシージャ呼び出しをサポートします。

    結論として、SQLのプロシージャ(ストアドプロシージャ)は、コードを再利用する可能性を高めるだけでなく、データベースのパフォーマンスも向上させます。どのように?ネットワークを介して送信される情報の量を減らすことにより、ネットワークのトラフィックを減らすことによって。これで、この記事は終わりです。

    MySQLについて詳しく知り、このオープンソースのリレーショナルデータベースについて知りたい場合は、MySQLDBA認定トレーニングをご覧ください。 インストラクター主導のライブトレーニングと実際のプロジェクトの経験が付属しています。このトレーニングは、MySQLを深く理解し、主題をマスターするのに役立ちます。

    質問がありますか?この「SQLの手順」のコメントセクションで言及してください。記事をいただければ、折り返しご連絡いたします。


    1. 並列処理がVACUUMに登場

    2. postgresqlはギャップのないシーケンスを生成します

    3. SQLにアップグレードする時期はいつですか?

    4. SQLLocalDBとSQLServerCE