CREATE FUNCTIONは、ストアド・ファンクションを作成するSQL文である。パッケージに含まれるファンクションと区別するために、スタンドアロン・ファンクションとも呼ばれる。

CREATE [ OR REPLACE ] FUNCTION [schema.]function
      
[ ( argument [, argument ] ... ) ]
RETURN データ型
[ AUTHID { CURRENT_USER | DEFINER } ] [PARALLEL_ENABLE] [DETERMINISTIC] { IS | AS } [PRAGMA_AUTONOMOUS_TRANSACTION;] [local_declarations] BEGIN executable_statements [EXCEPTION exception_handlers] END [function_name];
OR REPLACE
既存のファンクションがあれば再作成する。
schema
ファンクションを作成するスキーマの名前。 schema を省略した場合、現行のスキーマにファンクションを作成する。
function
作成するファンクションの名前
argument
ストアド・ファンクションの引数を次の構文で指定する。
name [ IN | OUT [NOCOPY] | IN OUT [NOCOPY] ] datatype
name
引数の名前
IN
入力パラメータ(デフォルト)
OUT
出力パラメータ
IN OUT
入力および出力パラメータ
NOCOPY
パラメータを参照渡しにする
datatype
引数のデータ型
RETURN データ型
ファンクションの戻り値のデータ型
AUTHID CURRENT_USER
実行者権限ファンクションを作成する。 実行者権限ファンクション とは、ファンクションを実行するユーザーの権限で実行されるファンクションである。また、スキーマ・オブジェクトへの未修飾の参照を実行者のスキーマで解決する。
AUTHID DEFINER
定義者権限ファンクションを作成する(デフォルト)。 定義者権限ファンクション とは、ファンクションが存在するスキーマの所有者の権限で実行されるファンクションである。また、スキーマ・オブジェクトへの未修飾の参照を所有者のスキーマで解決する。

ストアド・プロシージャやストアド・ファンクションを作成するときにコンパイル・エラーがあった場合でも、その詳細は表示されない。コンパイル・エラーの詳細を表示するようにするには、 SHOW ERRORS コマンドを実行する。

CREATE OR REPLACE FUNCTION func_quotes
(p_code IN quotes.code%TYPE)
RETURN quotes.name%TYPE
IS
  p_name quotes.name%TYPE;
BEGIN
  SELECT name INTO p_name FROM quotes WHERE code = p_code;
  RETURN p_name;
END;
/
スポンサーリンク