ストアド・ファンクションとは名前でコールできるPL/SQL文の集合である。ストアド・ファンクションはストアド・プロシージャと似ているが、コールした環境に値を戻す点が異なる。
ストアド・ファンクションを呼び出すには、SQL文の CALL を実行する方法と、SQL*Plusコマンドの EXECUTE を実行する方法がある。
また、SQL関数と同様にSQLから呼び出すこともできる。
SELECT func1() FROM DUAL
SELECT func2(123) FROM DUAL
SELECT func3(123, 'ABC') FROM DUAL
ストアド・ファンクションを操作するSQL文の一覧を以下に示す。
CALL は、プロシージャ又はファンクションを呼び出すSQL文である。
CREATE FUNCTION は、ストアド・ファンクションを作成するSQL文である。
CREATE PACKAGE は、ストアド・パッケージを作成するSQL文である。ストアド・パッケージの中でファンクションを宣言することができる。
CREATE PACKAGE BODY は、ストアド・パッケージの本体を作成するSQL文である。ストアド・パッケージの本体の中でファンクションを定義することができる。
ALTER FUNCTION は、ストアド・ファンクションを再コンパイルするSQL文である。
DROP FUNCTION は、ストアド・ファンクションを削除するSQL文である。
SELECT は、表、ビュー、マテリアライズド・ビューまたはファンクションを問い合わせるSQL文である。
ストアド・ファンクションに関するSQL*Plusコマンドの一覧を以下に示す。
DESCRIBE は、ストアド・ファンクションの定義を表示するSQL*Plusコマンドである。
EXECUTE は、PL/SQL文を実行するSQL*Plusコマンドである。
ストアド・ファンクションを操作するために必要なシステム権限の一覧を以下に示す。
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 は、現在のユーザが所有するストアド・オブジェクトのテキストソースを示すデータ・ディクショナリ・ビューである。