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

戻る
戻る
 
次へ
次へ
 

CREATE PROCEDURE

CREATE PROCEDURE文は、スタンドアロンのストアド・プロシージャを作成します。

必要な権限

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

SQL構文

CREATE [OR REPLACE] PROCEDURE [Owner.]ProcedureName 
     [(argument [IN|OUT|IN OUT][NOCOPY] datatype [DEFAULT expr][,...])]
     [invoker_rights_clause] [DETERMINISTIC]
     {IS|AS} plsql_procedure_body

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

AUTHID {CURRENT_USER|DEFINER}

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

パラメータ

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

パラメータ 説明
OR REPLACE プロシージャがすでに存在する場合に再作成するには、OR REPLACEを指定します。 この句を使用して、プロシージャを削除および再作成せずに既存のプロシージャの定義を変更します。 プロシージャを再作成すると、そのプロシージャはTimesTenで再コンパイルされます。
ProcedureName プロシージャの名前。
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値を指定するには、この句を使用します。キーワードDEFAULTのかわりに:=を指定できます。
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_procedure_body プロシージャの本体を指定します。

制限

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

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

説明

プロシージャquery_empを作成して、従業員に関する情報を取得します。 employee_id 171をプロシージャに渡し、2つのOUTパラメータに対してlast_nameおよびsalaryを取得します。

Command> CREATE OR REPLACE PROCEDURE query_emp
       >           (p_id IN employees.employee_id%TYPE,
       >            p_name  OUT employees.last_name%TYPE,
       >            p_salary OUT employees.salary%TYPE) IS
       >         BEGIN
       >           SELECT last_name, salary INTO p_name, p_salary
       >           FROM employees
       >           WHERE employee_id = p_id;
       >         END query_emp;
       >         /

Procedure created.

関連項目

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