PL / SQL関数

PL / SQL関数

I.はじめに

ORACLEは、PL / SQLプログラムをデータベースに格納しどこでも実行できますこれは、ストアドプロシージャまたは関数と呼ばれますプロシージャと関数は、まとめてPL / SQLサブルーチンと呼ばれます。これらはPL / SQLブロックと呼ばれ、データベースに格納され、入力、出力パラメータ、または入出力パラメータを介して呼び出し元と情報を交換します。プロシージャと関数の唯一の違いは、関数は常にデータを呼び出し元に返すのに対し、プロシージャはデータを返さないことです。

2つは関数を作成して呼び出します

1組み込み関数を作成します
(1)構文は次のとおりです。

説明:

  1. またはREPLACEはオプションです。これを使用すると、新しい関数を作成するか、競合することなく同じ名前の関数を置き換えることができます。
  2. 関数名の後には、IN、OUT、またはIN OUTタグを含むオプションのパラメーターリストがあります。パラメーターはコンマで区切られます。INパラメータータグは、関数の実行中に関数に渡される値が変更されないことを示しますOUTタグは値が関数で計算されたパラメータによる呼び出し文に渡されていることを示し;のOUTマークが関数に渡された値が変更され、呼び出し文に渡すことができることを示している。マークが省略された場合、パラメータは暗黙的にINです。
  3. 関数は値を返す必要があるため、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;

おすすめ

転載: blog.csdn.net/hcyxsh/article/details/115000183