標準のODBC機能を拡張するTimesTen組込みプロシージャについては、『Oracle TimesTen In-Memory Database APIリファレンス・ガイド』の組込みプロシージャに関する章を参照してください。TimesTen組込みプロシージャは、CallableStatementインタフェースを使用して実行できます。
組込みプロシージャを実行するには、次の書式を使用します。
CallableStatement.execute("{ Call Procedure }")
組込みプロシージャを準備および実行するには、次の書式を使用します。
CallableStatement cStmt;
cStmt = con.prepareCall("{ Call Procedure }");
cStmt.execute();
結果セットを返す組込みプロシージャについては、ResultSet get*()メソッドを使用して、返されたResultSetからデータを取得できます。例2.11を参照してください。
注意: | TimesTenで生成された結果セットの使用に関する注意事項は、「結果セットの使用」を参照してください。 |
ttCkptプロシージャをコールしてファジー・チェックポイントを開始するには、次のように入力します。
Connection con;
CallableStatement cStmt;
.......
cStmt = con.prepareCall("{ Call ttCkpt }");
cStmt.execute();
con.commit(); // commit the transaction
この例では、ttDataStoreStatusプロシージャをコールして、返される結果セットを印刷します。
「結果セットの使用」に示した例とは異なり、この例では、ResultSet.getString を使用して、バイナリであるContextフィールドを取得します。これは、出力データは処理で使用されるのではなく、印刷されるためです。Context 値を印刷しない場合は、ResultSet.getBytesメソッドを使用すると、より高いパフォーマンスが得られます。
ResultSet rs;
cStmt = con.prepareCall("{ Call ttDataStoreStatus }");
if (cStmt.execute() == true) {
rs = cStmt.getResultSet();
System.out.println("Fetching result set...");
while (rs.next()) {
System.out.println("\n Data store: " + rs.getString(1));
System.out.println(" PID: " + rs.getInt(2));
System.out.println(" Context: " + rs.getString(3));
System.out.println(" ConType: " + rs.getString(4));
System.out.println(" memoryID: " + rs.getString(5));
}
rs.close();
}
cStmt.close();
注意: | 名前を使用してパラメータをCallableStatementに渡すことはできません。序数を使用してパラメータを設定する必要があります。また、SQLのエスケープ構文は使用できません。 |