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