オラクルにおけるプロシージャとファンクションの主な違いは、プロシージャは値を返すことも返さないこともありますが、ファンクションは必ず値を返さなければならないということです。
リレーショナルデータベースに格納されたデータを管理するために、SQL(Structured Query Language)が使用されます。
PL/SQLはSQLの拡張言語で、Oracleのリレーショナルデータベースに格納されたデータを管理するために設計された。
一方、サブプログラムは、特定のタスクを実行するプログラミングユニットです。
これらのサブプログラムは、一連のパラメータを使用して呼び出すことができます。
さらに、これらを組み合わせることで、大きなプログラムを作成することができる。
PL/SQLでは、関数とプロシージャがサブプログラムの2つのタイプです。
オラクルにおけるプロシージャとは
プロシージャは特定のタスクを実行するブロックであり、ヘッダとボディの2つの主要なセクションで構成されています。
ヘッダーは名前とプロシージャに渡すパラメータで構成され、ボディは宣言セクション、実行セクション、例外セクションで構成されます。
プロシージャを作成する例を以下に示します。
テーブル名はStudentとする。
まず、プログラマは次のように作成することができる。
create or replace table student (id number (10) primary key, name varchar2(100));
次に、プロシージャを作成します。
以下は、学生テーブルにレコードを挿入するプロシージャです。
最後に、プログラマは、プロシージャを呼び出すことができます。
さらに、以下のようにプロシージャを削除することができる。
プロシージャの名前はprocedure1です。
drop procedure procedure1;
オラクルの関数とは
関数はプロシージャに似ていますが、常に値を返します。
そして、プログラマーは以下のコードを使って、関数を呼び出すことができます。
さらに、プログラマーは次のように関数を削除することができる。
function1 は関数の名前です。
drop function function1;
Oracleにおけるプロシージャと関数の違い
定義
プロシージャは、Oracle データベースの PL/SQL 言語で利用可能なサブプログラムの一種で、値を直接返さないものです。
これに対し、関数は Oracle データベースの PL/SQL 言語で利用可能なサブプログラムの一種で、常に値を返すものである。
このように、プロシージャとファンクションの主な違いを説明する。
メインタスク
重要なのは、プロシージャはタスクを実行しますが、関数は値を計算し、返します。
返り値
プロシージャは値を返すことも返さないこともありますが、関数は常に値を返します。
結論
OracleのPL/SQLのサブプログラムは、簡単に言うとprocedureとfunctionの2つです。
これらのサブプログラムは、IN, OUT, INPUTパラメータを使用します。
プログラマはこれらのパラメータを使用して、プロシージャとファンクションを作成します。
Oracleにおけるプロシージャとファンクションの主な違いは、プロシージャは値を返すかどうかですが、ファンクションは常に値を返さなければならないことです。