Oracleにおけるプロシージャと関数の違いとは?分かりやすく解説!

この記事には、アフィリエイト広告を利用しています。

スポンサーリンク


オラクルにおけるプロシージャとファンクションの主な違いは、プロシージャは値を返すことも返さないこともありますが、ファンクションは必ず値を返さなければならないということです。

リレーショナルデータベースに格納されたデータを管理するために、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;

オラクルの関数とは

関数はプロシージャに似ていますが、常に値を返します。

そして、プログラマーは以下のコードを使って、関数を呼び出すことができます。

Main Difference - Procedure vs Function in Oracle

さらに、プログラマーは次のように関数を削除することができる。

function1 は関数の名前です。

drop function function1;

Oracleにおけるプロシージャと関数の違い

定義

プロシージャは、Oracle データベースの PL/SQL 言語で利用可能なサブプログラムの一種で、値を直接返さないものです

これに対し、関数は Oracle データベースの PL/SQL 言語で利用可能なサブプログラムの一種で、常に値を返すものである

このように、プロシージャとファンクションの主な違いを説明する。

メインタスク

重要なのは、プロシージャはタスクを実行しますが、関数は値を計算し、返します。

返り値

プロシージャは値を返すことも返さないこともありますが、関数は常に値を返します。

結論

OracleのPL/SQLのサブプログラムは、簡単に言うとprocedureとfunctionの2つです。

これらのサブプログラムは、IN, OUT, INPUTパラメータを使用します。

プログラマはこれらのパラメータを使用して、プロシージャとファンクションを作成します。

Oracleにおけるプロシージャとファンクションの主な違いは、プロシージャは値を返すかどうかですが、ファンクションは常に値を返さなければならないことです。

タイトルとURLをコピーしました