CALL

CALL文を使用して、TimesTen組込みプロシージャを実行したり、スタンドアロンまたはSQLのパッケージに含まれるPL/SQLプロシージャまたはファンクションを実行します。

必要な権限

各TimesTen組込みプロシージャの実行に必要な権限は、『Oracle TimesTen In-Memory Databaseリファレンス』「組込みプロシージャ」に示された各プロシージャの説明を参照してください。

CALL文を使用して、スタンドアロンまたはパッケージに含まれる独自のPL/SQLプロシージャまたはファンクションをコールする所有者には、必要な権限はありません。その他のすべてのユーザーには、プロシージャまたはファンクション、またはこれらが定義されているパッケージに対するEXECUTE権限が必要です。

TimesTen Scaleoutでの使用

この文は、TimesTen Scaleoutでサポートされています。

SQL構文

TimesTen組込みプロシージャをコールする場合:

CALL TimesTenBuiltIn [( arguments )]

スタンドアロンまたはパッケージに含まれるPL/SQLプロシージャまたはファンクションをコールする場合、名前でコールするか、式の結果としてコールできます。

PL/SQLプロシージャをコールする場合:

CALL [Owner.][Package.]ProcedureName [( arguments )]

パラメータを返すPL/SQLファンクションをコールする場合は、次のいずれかが適切です。

CALL [Owner.][Package.]FunctionName [( arguments )] INTO :return_param

ノート:

ユーザー独自のPL/SQLプロシージャまたはファンクションは、同じ名前のTimesTen組込みプロシージャよりも優先されます。

パラメータ

パラメータ 説明

TimesTenBuiltIn

TimesTen組込みプロシージャの名前。TimesTen組込みプロシージャの完全なリストは、『Oracle TimesTen In-Memory Databaseリファレンス』「組込みプロシージャ」を参照してください。

[Owner.]ProcedureName

PL/SQLプロシージャの名前。オプションで、プロシージャの所有者を指定できます。

[Owner.]FunctionName

PL/SQLファンクションの名前。オプションで、ファンクションの所有者を指定できます。

arguments

PL/SQLプロシージャまたはファンクションの0個以上の引数を指定します。

INTO

ルーチンがファンクションである場合は、INTO句が必要です。

return_param

ファンクションの戻り値を格納するホスト変数を指定します。

説明

TimesTenでCALL文を使用してPL/SQLプロシージャまたはファンクションを実行する方法の詳細は、『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』「プロシージャおよびファンクションの実行」『Oracle TimesTen In-Memory Database C開発者ガイド』「プロシージャおよび関数を実行するためのCALLの使用」または『Oracle TimesTen In-Memory Database Java開発者ガイド』「プロシージャおよびファンクションを実行するためのCALLの使用」を参照してください。

次に、mytestファンクションの定義を示します。

create or replace function mytest return number is
begin
  return 1;
end;
/

次に示すように、CALL文でmytestファンクションを実行します。

Command> variable n number;
Command> call mytest() into :n;
Command> print n;
N                    : 1

次の例では、入力として従業員IDが指定された従業員の給与を戻すファンクションを作成し、ファンクションをコールして、戻された結果を表示します。

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.
 
Command> variable n number;
Command> call get_sal(100) into :n;
Command> print n;
N                    : 24000