ヘッダーをスキップ
Oracle TimesTen In-Memory Database SQLリファレンス・ガイド
リリース11.2.1
B56051-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

CREATE FUNCTION

CREATE FUNCTION文は、スタンドアロンのストアド・ファンクションを作成します。

必要な権限

CREATE PROCEDURE(所有者の場合)またはCREATE ANY PROCEDURE(非所有者の場合)

SQL構文

CREATE [OR REPLACE] FUNCTION [Owner.]FunctionName 
     [(argument [IN|OUT|IN OUT][NOCOPY] datatype [DEFAULT expr][,...])]
     RETURN datatype [invoker_rights_clause] [DETERMINISTIC]
     {IS|AS} plsql_function_body

invoker_rights_clauseの構文は次のとおりです。

AUTHID {CURRENT_USER|DEFINER}

invoker_rights_clauseDETERMINISTICは任意の順序で指定できます。

パラメータ

CREATE FUNCTION文には、次のパラメータがあります。

パラメータ 説明
OR REPLACE ファンクションがすでに存在する場合に再作成するには、OR REPLACEを指定します。 この句を使用して、削除および再作成せずに既存のファンクションの定義を変更します。 ファンクションを再作成すると、そのファンクションはTimesTenで再コンパイルされます。
FunctionName ファンクションの名前。
argument 引数またはパラメータの名前。 ファンクションに0以上のパラメータを指定できます。パラメータを指定する場合は、パラメータのデータ型を指定する必要があります。データ型はPL/SQLデータ型である必要があります。

PL/SQLデータ型の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

IN| OUT |IN OUT パラメータのモード。

INは読取り専用パラメータです。 パラメータの値をファンクションに渡すことはできますが、ファンクションからパラメータの値をファンクションの外に渡し、コール側PL/SQLブロックに戻すことはできません。パラメータの値は変更できません。

OUTは書込み専用パラメータです。 値をファンクションからコール側PL/SQLブロックに戻すには、OUTパラメータを使用します。パラメータに値を割り当てることができます。

IN OUTは読取り/書込みパラメータです。 値をファンクションに渡し、コール側プログラムに戻すことができます(元の変更されていない値またはファンクション内で設定された新しい値)。

INがデフォルトです。

NOCOPY 可能なかぎり迅速にパラメータを渡すようにTimesTenに指示するには、NOCOPYを指定します。 レコード、索引付き表、OUTまたはIN OUTパラメータへのVARRAYなどの大きな値を渡す場合に、パフォーマンスを向上できます。 INパラメータでは、常にNOCOPYが渡されます。

NOCOPYの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

DEFAULT expr パラメータのデフォルト値を指定するには、この句を使用します。キーワードDEFAULTのかわりに:=を指定できます。
RETURN datatype 必須の句。 ファンクションは値を戻す必要があります。 ファンクションの戻り値のデータ型を指定する必要があります。

データ型の長さ、精度またはスケールは指定しないでください。

データ型はPL/SQLデータ型です。

PL/SQLデータ型の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

invoker_rights_clause ファンクションを所有するユーザーの権限でファンクションを実行するか、CURRENT_USERの権限でファンクションを実行するかを指定できます。

ファンクションをCURRENT_USERの権限で実行することを指定するには、CURRENT_USERを指定します。

ファンクションの所有者の権限でファンクションを実行することを指定するには、DEFINERを指定します。

DEFINERがデフォルトです。

詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

DETERMINISTIC パラメータに同じ値を指定してファンクションをコールした場合に常に同じ結果値を戻すように指定するには、DETERMINISTICを指定します。

DETERMNISTIC句の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

IS|AS ISまたはASを指定して、ファンクションの本体を宣言します。
plsql_function_spec ファンクションの本体を指定します。

制限

次の句はTimesTenではサポートされません。

CREATE FUNCTION文はレプリケートされません。

ファンクションを作成または置き換えた場合、ファンクションに付与された権限は同じままです。オブジェクトを削除して再作成した場合、元のオブジェクトに付与されていたオブジェクト権限は削除されます。

1つの入力パラメータを指定してファンクションget_salを作成します。 NUMBER型としてsalaryを戻します。

Command> CREATE OR REPLACE FUNCTION get_sal
       >   (p_id employees.employee_id%TYPE) RETURN NUMBER IS
       >   v_sal employees.salary%TYPE := 0;
       > BEGIN
       >   SELECT salary INTO v_sal FROM employees
       >     WHERE employee_id = p_id;
       >   RETURN v_sal;
       > END get_sal;
       > /

Function created.

関連項目

『Oracle Database PL/SQL言語リファレンス』および『Oracle Database SQL言語リファレンス』