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
である場合を除き、この例で示すように一重引用符で囲む必要があります。