CREATE FUNCTION
目的
ファンクションはPL/SQLを使用して定義されます。このため、この項では一般的な情報について説明します。構文およびセマンティクスの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
CREATE
FUNCTION
文を使用すると、スタンドアロン・ストアド・ファンクションまたはコール仕様を作成できます。
-
ストアド・ファンクション(ユーザー・ファンクションまたはユーザー定義ファンクション)は、名前でコールできるPL/SQL文の集合です。ストアド・ファンクションは、プロシージャとよく似ていますが、ファンクションは、コールした環境に値を戻す点で異なります。ストアド・ファンクションは、SQL式の一部として使用できます。
-
コール仕様は、PL/SQLからコールできるように、Javaメソッドまたは第三世代言語(3GL)ルーチンを宣言します。
CALL
SQL文を使用して、そのようなメソッドまたはルーチンをコールすることもできます。コール仕様は、コールされたときに起動するJavaメソッドまたは共有ライブラリの名前付きファンクションをOracle Databaseに指示します。また、引数および戻り値に対して実行する型変換もデータベースに指示します。
ノート:
CREATE
PACKAGE
文を使用して、パッケージの一部としてファンクションを作成することもできます。
関連項目:
-
プロシージャおよびファンクションの概要は、「CREATE PROCEDURE」を参照してください。パッケージの作成については、「CREATE PACKAGE」を参照してください。ファンクションの変更および削除については、「ALTER FUNCTION」および「DROP FUNCTION」を参照してください。
-
共有ライブラリについては、「CREATE LIBRARY」を参照してください。
-
外部ファンクションの登録の詳細は、『Oracle Database開発ガイド』を参照してください。
前提条件
自分のスキーマ内にファンクションを作成または再作成する場合は、CREATE
PROCEDURE
システム権限が必要です。他のユーザーのスキーマ内にファンクションを作成または再作成する場合は、CREATE
ANY
PROCEDURE
システム権限が必要です。
構文
ファンクションはPL/SQLを使用して定義されます。このため、このマニュアルの構文図ではSQLキーワードのみを示します。PL/SQLの構文、セマンティクスおよび例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。
create_function::=
(plsql_function_source
: 『Oracle Database PL/SQL言語リファレンス』を参照。)
セマンティクス
OR REPLACE
OR
REPLACE
を指定すると、既存のファンクションを再作成できます。この句を指定した場合、既存のファンクションに付与されているオブジェクト権限を削除、再作成および再付与しなくても、そのファンクションの定義を変更できます。ファンクションを再定義した場合、そのファンクションは再コンパイルされます。
再定義したファンクションに対して権限が付与されていたユーザーは、権限を再付与されなくても、そのファンクションにアクセスできます。
ファンクション索引がファンクションに依存している場合、索引にDISABLED
のマークが付きます。
関連項目:
SQLを使用したファンクションの再コンパイルについては、「ALTER
FUNCTION
」を参照してください。
[ EDITIONABLE | NONEDITIONABLE ]
この句を使用すると、schema
のスキーマ・オブジェクト・タイプFUNCTION
のエディショニングが有効化されたときに、そのファンクションをエディション・オブジェクトにするか非エディション・オブジェクトにするかを指定できます。デフォルトは、EDITIONABLE
です。エディション・オブジェクトと非エディション・オブジェクトの詳細は、『Oracle Database開発ガイド』を参照してください。
plsql_function_source
plsql_function_source
の構文、セマンティクスおよび例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。