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

OracleDatabaseでのPL/SQLサブルーチンの呼び出し表記

    これまでのいくつかのチュートリアルは、PL/SQL関数やストアドプロシージャなどのPL/SQLサブルーチンに関するものであったため、それらの呼び出し表記について説明することが必須になります。 PL / SQLサブルーチンの概念を学習することは、それらの呼び出し表記も学習するまで、完全であるとは見なされません。

    PL / SQLサブルーチンの表記法とは何ですか?

    表記法の呼び出しは、PL/SQL関数やストアドプロシージャなどのサブルーチンのパラメータに値を提供する方法です。

    サブルーチンの呼び出し表記のタイプ

    Oracle PL / SQLには、3種類の呼び出し表記があります。これらは次のとおりです。

    1. 位取り記数法
    2. 名前付き表記と
    3. 混合呼び出し表記

    位置の呼び出し表記

    位置表記は、ほとんどすべてのコンピュータープログラミング言語で見られる最も一般的な呼び出し表記です。位置表記では、各仮パラメータの値を順番に指定する必要があります。つまり、プロシージャまたは関数で宣言されたのと同じ順序で、仮パラメータの値を指定する必要があります。

    位置表記では、データ型と実際のパラメーターの位置が仮パラメーターと一致する必要があります。

    推奨読書:実際のパラメータと正式なパラメータ

    例:PL/SQLサブルーチンを呼び出すための位取り記数法。

    CREATE OR REPLACE PROCEDURE emp_sal
    (dep_id NUMBER, sal_raise NUMBER) 
    IS
    BEGIN
      	UPDATE employees 
    SET salary = salary * sal_raise 
    WHERE department_id = dep_id;
      
    DBMS_OUTPUT.PUT_LINE ('salary updated successfully');
    END;
     /
    

    これは、いくつかの小さな変更はありますが、パラメータを使用してストアドプロシージャを作成する方法についてPL/SQLチュートリアル42で行ったのと同じ例です。ここで、位置呼び出し表記を使用する場合は、宣言されているのと同じ方法で、上記のプロシージャの両方のパラメータに値を指定する必要があります。

    Oracleデータベースの位置表記を使用したスト​​アドプロシージャの呼び出し

    EXECUTE emp_sal(40,2);

    この単純なプロシージャ呼び出しでは、値40は正式なパラメータdep_idに対応し、値2はパラメータsal_raiseに対応します。

    名前付き呼び出し表記

    名前付き呼び出し表記を使用すると、名前を使用して正式なパラメーターに値を渡すことができます。これにより、必須または必須のパラメータのみに値を割り当てることができます。

    この呼び出し表記は、パラメーターを含むサブルーチンがあり、それらのパラメーターの一部が必須で、一部がオプションであり、必須パラメーターのみに値を渡したい場合に役立ちます。

    アソシエーションオペレーター

    名前を使用して仮パラメータに値を割り当てるために、関連付け演算子を使用します。これは、等しい(=)記号と大なり記号(>)の組み合わせです。演算子の左側に仮パラメータの名前を書き込み、演算子の右側に割り当てる値を書き込みます。

    PL/SQLサブルーチンを呼び出すための名前付き呼び出し表記の例

    CREATE OR REPLACE FUNCTION add_num
    (var_1 NUMBER, var_2 NUMBER DEFAULT 0, var_3 NUMBER ) RETURN NUMBER 
    IS
    BEGIN
      RETURN var_1 + var_2 + var_3;
    END;
    /
    

    上記の関数には3つのパラメーターがあります。これら3つのパラメーターのうち、2つは必須で、1つはオプションでデフォルト値は0です。

    この関数は、位置表記を使用して呼び出すことができます。ただし、満たす必要のある制限があります。つまり、宣言されたのと同じ順序ですべての仮パラメータに値を指定する必要があり、仮パラメータと実際のパラメータのデータ型が一致する必要があります。

    したがって、オプションのパラメーターを省略してデフォルト値を使用する場合、またはパラメーターが宣言されたパラメーターの順序を忘れた場合は、その場合、位置表記を使用して上記のサブルーチンを呼び出すのは少し難しくなります。このようなシナリオでは、名前付き呼び出し表記を利用できます。この呼び出し表記は、サブルーチンを呼び出す際に必要な柔軟性を提供します。

    Oracleデータベースで名前付き呼び出し表記を使用したPL/SQL関数呼び出し

    DECLARE
      var_result  NUMBER;
    BEGIN
      var_result := add_num(var_3 => 5, var_1 =>2);
      DBMS_OUTPUT.put_line('Result ->' || var_result);
    END;
    

    PL / SQL関数呼び出しについては、YouTubeチャンネルの同じトピックに関するビデオチュートリアルで詳しく説明しました。

    PL/SQLサブルーチンを呼び出すための混合呼び出し表記

    名前が混合呼び出し表記で示唆しているように、名前付き表記と位置呼び出し表記の組み合わせを使用してサブルーチンを呼び出すことができます。混合呼び出し表記は、パラメータリストが最初にすべての必須パラメータで定義され、次にオプションのパラメータで定義される場合に非常に役立ちます。

    PL/SQLサブルーチンを呼び出すための混合呼び出し表記の例

    これは、名前付き呼び出し表記を行うときにコーディングしたのと同じ関数add_num()を呼び出している匿名ブロックです。

    DECLARE
      var_result  NUMBER;
    BEGIN
      var_result := add_num(var_1 => 10, 30 ,var_3 =>19);
      DBMS_OUTPUT.put_line('Result ->' || var_result);
    END;
    

    これが、PL/SQLサブルーチンの呼び出しに混合呼び出し表記を使用する方法です。

    自分で試してみてください

    上記の概念の知識を使用して、次の質問を解決してみてください。

    2つの数値を交換するためのパラメータを使用してPL/SQL関数を記述し、混合呼び出し表記を使用してその関数を呼び出します。

    あなたのコードまたはあなたのコードのスナップショットを私のソーシャルメディア[Twitter//Facebook]で私と共有することができます。

    あなたが読書を楽しんだことを願っています。このブログを高く評価して共有してください。ありがとう、そして素晴らしい一日を。


    1. 外部キー制約で使用される列を変更できません

    2. カンマ区切りの文字列で値を検索するMySQLクエリ

    3. SQLServerデータベースですべてのチェック制約を有効にする方法-SQLServer/TSQLチュートリアルパート88

    4. SQLServerテーブルのID列に手動で値を挿入する方法-SQLServer/T-SQLチュートリアルパート41