3 組込みプロシージャ
TimesTen組込みプロシージャによって、標準のODBCおよびJDBC機能が拡張されます。
これらのプロシージャは、ODBCまたはJDBCのプロシージャ・コール・インタフェースを使用してコールできます。プロシージャは、次の例に示すとおり、SQL文と同様に実行されます。
次のODBCのSQLExecDirectコールはttOpsSetFlag組込みプロシージャを起動し、オプティマイザに対して、コマンドを準備するときに一時ハッシュ索引を作成しないように指示します。
SQLExecDirect (hstmt, (SQLCHAR*)
"{CALL ttOptSetFlag ('TmpHash', 0)}", SQL_NTS);
このコールは、次のJDBCコールと同等です。
CallableStatement cstmt = con.prepareCall
("{CALL ttOptSetFlag ('TmpHash', 0)}");
cstmt.execute();
TimesTen組込みプロシージャは、次の例に示すとおり、CALLとともにEXECUTE IMMEDIATE文を使用してPL/SQLからコールすることもできます。この文の詳細は、『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』の「PL/SQLでの動的SQL (EXECUTE IMMEDIATE文)」を参照してください。
結果セットを返すTimesTen組込みプロシージャは、OCIで直接にはサポートされていません。この目的にはPL/SQLを使用できます。例については、『Oracle TimesTen In-Memory Database C開発者ガイド』の「OCIでPL/SQLを使用してTimesTen組込みプロシージャをコール」を参照してください。
たとえば、組込みプロシージャttConfigurationをコールするには、PL/SQLレコード型を作成した後、SELECT INTOを実行してそのレコード型に値を入れます。ttConfigurationでは複数の行が返されるため、BULK COLLECTを使用します。
Command> DECLARE
TYPE ttConfig_record IS RECORD
(name varchar2(255), value varchar2 (255));
TYPE ttConfig_table IS TABLE OF ttConfig_record;
v_ttConfigs ttConfig_table;
BEGIN
EXECUTE IMMEDIATE 'CALL ttConfiguration'
BULK COLLECT into v_ttConfigs;
DBMS_OUTPUT.PUT_LINE ('Name: ' || v_ttConfigs(1).name
|| ' Value: ' || v_ttConfigs(1).value);
end;
/
PL/SQL procedure successfully completed.
ttIsqlコマンドラインから組込みプロシージャをコールすることもできます。
Command> call ttDBCompactConfig(2000,5,2000); < 2000, 5, 2000 > 1 row found.
ノート:
組込みプロシージャの文字列パラメータ値は、値がNULLである場合を除き、この例で示すように一重引用符で囲む必要があります。