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

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

目次

  1. ファンクションの実行方法
  2. SQL文
    1. CALL
    2. CREATE FUNCTION
    3. ALTER FUNCTION
    4. DROP FUNCTION
    5. SELECT
  3. SQL*Plusコマンド
    1. DESCRIBE
    2. EXECUTE
  4. システム権限
    1. CREATE PRODECURE
    2. CREATE ANY PRODECURE
    3. ALTER ANY PRODECURE
    4. DROP ANY PRODECURE
  5. データ・ディクショナリ・ビュー
    1. ALL_ARGUMENTS
    2. ALL_PROCEDURES
    3. ALL_SOURCE
    4. DBA_ARGUMENTS
    5. DBA_PROCEDURES
    6. DBA_SOURCE
    7. USER_ARGUMENTS
    8. USER_PROCEDURES
    9. USER_SOURCE

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

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

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

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

SQL文

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

CALL

CALL は、プロシージャ又はファンクションを呼び出すSQL文である。

CREATE FUNCTION

CREATE FUNCTION は、ストアド・ファンクションを作成するSQL文である。

CREATE PACKAGE

CREATE PACKAGE は、ストアド・パッケージを作成するSQL文である。ストアド・パッケージの中でファンクションを宣言することができる。

CREATE PACKAGE BODY

CREATE PACKAGE BODY は、ストアド・パッケージの本体を作成するSQL文である。ストアド・パッケージの本体の中でファンクションを定義することができる。

ALTER FUNCTION

ALTER FUNCTION は、ストアド・ファンクションを再コンパイルするSQL文である。

DROP FUNCTION

DROP FUNCTION は、ストアド・ファンクションを削除するSQL文である。

SELECT

SELECT は、表、ビュー、マテリアライズド・ビューまたはファンクションを問い合わせるSQL文である。

SQL*Plusコマンド

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

DESCRIBE

DESCRIBE は、ストアド・ファンクションの定義を表示するSQL*Plusコマンドである。

EXECUTE

EXECUTE は、PL/SQL文を実行するSQL*Plusコマンドである。

システム権限

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

CREATE PRODECURE

CREATE PRODECURE は、自分のスキーマにプロシージャ、ファンクション及びパッケージを作成・削除できるシステム権限である。

CREATE ANY PRODECURE

CREATE ANY PRODECURE は、任意のスキーマにプロシージャ、ファンクション及びパッケージを作成できるシステム権限である。

ALTER ANY PRODECURE

ALTER ANY PRODECURE は、任意のスキーマのプロシージャ、ファンクション及びパッケージを変更できるシステム権限である。

DROP ANY PRODECURE

DROP ANY PRODECURE は、任意のスキーマのプロシージャ、ファンクション及びパッケージを削除できるシステム権限である。

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

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

ALL_ARGUMENTS

ALL_ARGUMENTS は、現在のユーザーがアクセスできるファンクション及びプロシージャ内の引数を示すデータ・ディクショナリ・ビューである。

ALL_PROCEDURES

ALL_PROCEDURES は、現在のユーザがアクセスできるプロシージャ、ファンクション及びパッケージを示すデータ・ディクショナリ・ビューである。

ALL_SOURCE

ALL_SOURCE は、現在のユーザがアクセスできるストアド・オブジェクトのテキストソースを示すデータ・ディクショナリ・ビューである。

DBA_ARGUMENTS

DBA_ARGUMENTS は、データベースで使用可能なファンクション及びプロシージャの引数のリストを示すデータ・ディクショナリ・ビューである。

DBA_PROCEDURES

DBA_PROCEDURES は、すべてのプロシージャ、ファンクション及びパッケージを示すデータ・ディクショナリ・ビューである。

DBA_SOURCE

DBA_SOURCE は、すべてのストアド・オブジェクトのテキストソースを示すデータ・ディクショナリ・ビューである。

USER_ARGUMENTS

USER_ARGUMENTS は、現在のユーザーが所有するファンクション及びプロシージャ内の引数を示すデータ・ディクショナリ・ビューである。

USER_PROCEDURES

USER_PROCEDURES は、現在のユーザが所有するプロシージャ、ファンクション及びパッケージを示すデータ・ディクショナリ・ビューである。

USER_SOURCE

USER_SOURCE は、現在のユーザが所有するストアド・オブジェクトのテキストソースを示すデータ・ディクショナリ・ビューである。