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組込みプロシージャよりも優先されます。
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
TimesTen組込みプロシージャの名前。TimesTen組込みプロシージャの完全なリストは、『Oracle TimesTen In-Memory Databaseリファレンス』の「組込みプロシージャ」を参照してください。 |
|
|
PL/SQLプロシージャの名前。オプションで、プロシージャの所有者を指定できます。 |
|
|
PL/SQLファンクションの名前。オプションで、ファンクションの所有者を指定できます。 |
|
|
PL/SQLプロシージャまたはファンクションの0個以上の引数を指定します。 |
|
|
ルーチンがファンクションである場合は、 |
|
|
ファンクションの戻り値を格納するホスト変数を指定します。 |
説明
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