PL / SQL関数
I.はじめに
ORACLEは、PL / SQLプログラムをデータベースに格納し、どこでも実行できます。これは、ストアドプロシージャまたは関数と呼ばれます。プロシージャと関数は、まとめてPL / SQLサブルーチンと呼ばれます。これらはPL / SQLブロックと呼ばれ、データベースに格納され、入力、出力パラメータ、または入出力パラメータを介して呼び出し元と情報を交換します。プロシージャと関数の唯一の違いは、関数は常にデータを呼び出し元に返すのに対し、プロシージャはデータを返さないことです。
2つは関数を作成して呼び出します
1組み込み関数を作成します
(1)構文は次のとおりです。
説明:
- またはREPLACEはオプションです。これを使用すると、新しい関数を作成するか、競合することなく同じ名前の関数を置き換えることができます。
- 関数名の後には、IN、OUT、またはIN OUTタグを含むオプションのパラメーターリストがあります。パラメーターはコンマで区切られます。INパラメータータグは、関数の実行中に関数に渡される値が変更されないことを示します。OUTタグは値が関数で計算されたパラメータによる呼び出し文に渡されていることを示し;のOUTマークが関数に渡された値が変更され、呼び出し文に渡すことができることを示している。マークが省略された場合、パラメータは暗黙的にINです。
- 関数は値を返す必要があるため、RETURNには返された結果のデータ型が含まれます
CREATE OR REPLACE ] FUNCTION function_name
[ (argment [ {
IN | IN OUT }]Type,
argment [ {
IN | OUT | IN OUT } ] Type ]
[ AUTHID DEFINER | CURRENT_USERR ]
RETURN return_type
{
IS | AS }
<类型 变量的说明>
BEGIN
FUNCTION_body
EXCEPTION
其它语句
END
(2)ケース
①パラメータのない機能
この機能を実行します。②
特定の部門の給与の合計を取得し
ます。次の機能を実行します。
2組み込み関数の呼び出し
関数が宣言されたときに定義されたパラメーターは仮パラメーターと呼ばれ、アプリケーションが呼び出されたときに関数に渡されるパラメーターは実パラメーターと呼ばれます。アプリケーションプログラムが関数を呼び出すとき、次の3つのメソッドを使用してパラメータを関数に渡すことができます
。①最初のパラメータ受け渡し形式は位置表記と呼ばれ、形式は次のとおりです。
argument_value1[,argum ent_value2 …]
場合:給与部門の合計を計算する
②2番目の形式は名前パラメーター渡された表現形式と呼ばれます
。引数はパラメーターの形式であり、定義されるパラメーター名の形式でも同じです。関数宣言。パラメータは実際のパラメータです。この形式では、シチュエーションパラメータと実際のパラメータがペアで表示され、それらの関係が一意に決定されるため、パラメータの順序を任意に配置できます。
argument => parameter [,…]
場合:特定の部門の賃金の合計を計算する
③3番目のパラメータ転送形式は混合表記と呼ばれます。
つまり、関数が呼び出されると、位置表記と名前表記の両方がパラメータを関数に渡すために使用されます
。このパラメータ受け渡しメソッドでは、位置を表すため、パラメータ名の前にパラメータメソッドを渡す必要があり、渡された法則を示します。つまり、関数に含まれるパラメーターの数に関係なく、1つのパラメーターが名前表記を使用している限り、後続のすべてのパラメーターは名前表記を使用する必要があります。
事例:特定の部門の賃金の合計を計算する
どのパラメータ転送方法を採用しても、実際のパラメータと正式なパラメータの間のデータ転送には、アドレス転送方法と値転送方法の2つの方法しかありません。いわゆるアドレス転送方式とは、関数を呼び出すときに、実パラメータのアドレスポインタが仮パラメータに渡され、仮パラメータと実パラメータがメモリ内の同じ領域を指すようにすることで、パラメータデータの転送。このメソッドは参照メソッドとも呼ばれます。つまり、仮パラメータは実際のパラメータデータを参照します。入力パラメータはすべてアドレス方式で転送されます
。値転送方式とは、実際のパラメータのアドレスを渡すのではなく、実際のパラメータデータを仮パラメータにコピーすることです。デフォルトでは、出力パラメーターと入力パラメーターおよび出力パラメーターの両方で、値の受け渡し方法が採用されています。関数が呼び出されると、ORACLEは実際のパラメータデータを入力パラメータと出力パラメータにコピーし、関数が通常の操作を終了すると、出力形式パラメータと入力および出力形式パラメータデータを実際のパラメータ変数にコピーします。
3パラメーターのデフォルト値
CREATEOR REPLACE FUNCTIONステートメントで関数パラメーターを宣言する場合、DEFAULTキーワードを使用して、入力パラメーターのデフォルト値を指定できます。
デフォルト値の関数が作成された後、関数が呼び出されたときに、デフォルト値のパラメーターに実際のパラメーター値が指定されていない場合、関数はパラメーターのデフォルト値
を使用します。ただし、呼び出し元がデフォルトパラメータの実際のパラメータを提供すると、関数は実際のパラメータ値を使用します。関数を作成するときは、入力パラメーターにのみデフォルト値を設定できますが、入力パラメーターと出力パラメーターには設定できません。
3つの削除機能
DROP FUNCTIONコマンドを使用して、不要な関数を削除できます。構文は次のとおりです。
DROP FUNCTION [user.]Function_name;