Oracleデータベースのストアド・ファンクション

ストアド・ファンクションとは名前でコールできるPL/SQL文の集合である。ストアド・ファンクションはストアド・プロシージャと似ているが、コールした環境に値を戻す点が異なる。

SQL文

ストアド・ファンクションを操作するSQL文の一覧を次に示す。

CALL
プロシージャ又はファンクションを呼び出す。
CREATE FUNCTION
ストアド・ファンクションを作成する。
ALTER FUNCTION
ストアド・ファンクションを再コンパイルする。
DROP FUNCTION
ストアド・ファンクションを削除する。
SELECT
表、ビュー、マテリアライズド・ビューまたはファンクションを問い合わせる。

SQL*Plusコマンド

ストアド・ファンクションに関するSQL*Plusコマンドの一覧を示す。

DESCRIBE
ストアド・ファンクションの定義を表示する。
EXECUTE
PL/SQL文を実行する。

システム権限

ストアド・ファンクションを操作するために必要なシステム権限の一覧を次に示す。

CREATE PRODECURE
自分のスキーマにプロシージャ、ファンクション及びパッケージを作成・削除できる。
CREATE ANY PRODECURE
任意のスキーマにプロシージャ、ファンクション及びパッケージを作成できる。
ALTER ANY PRODECURE
任意のスキーマのプロシージャ、ファンクション及びパッケージを変更できる。
DROP ANY PRODECURE
任意のスキーマのプロシージャ、ファンクション及びパッケージを削除できる。

データ・ディクショナリ・ビュー

ストアド・ファンクションのスキーマ定義などを格納したデータ・ディクショナリ・ビューの一覧を次に示す。

ALL_ARGUMENTS
現在のユーザーがアクセスできるファンクション及びプロシージャ内の引数
ALL_PROCEDURES
現在のユーザがアクセスできるプロシージャ、ファンクション及びパッケージを示す。
ALL_SOURCE
現在のユーザがアクセスできるストアド・オブジェクトのテキストソースを示す。
DBA_ARGUMENTS
データベースで使用可能なファンクション及びプロシージャの引数のリスト
DBA_PROCEDURES
すべてのプロシージャ、ファンクション及びパッケージを示す。
DBA_SOURCE
すべてのストアド・オブジェクトのテキストソースを示す。
USER_ARGUMENTS
現在のユーザーが所有するファンクション及びプロシージャ内の引数
USER_PROCEDURES
現在のユーザが所有するプロシージャ、ファンクション及びパッケージを示す。
USER_SOURCE
現在のユーザが所有するストアド・オブジェクトのテキストソースを示す。

ファンクションの実行方法

ストアドファンクションを呼び出すには、SQL文のCALLを実行する方法と、SQL*PlusコマンドのEXECUTEを実行する方法がある。

また、SQL関数と同様にSQLから呼び出すこともできる。

SELECT func1() FROM DUAL
SELECT func2(123) FROM DUAL
SELECT func3(123, 'ABC') FROM DUAL