関数を呼び出し、名前でいくつかのパラメーターを設定します。例:
Connection c = null;
ResultSet rs = null;
String query;
PreparedStatement ps;
CallableStatement cs = null;
try {
c = DbUtils.getConnection();
cs = c.prepareCall("{? = call get_proc_name(?, ?) }");
cs.registerOutParameter(1, OracleTypes.VARCHAR);
cs.setInt("in_proc_type", ProcTypes.SELECT);
cs.setLong("in_table_id", tableId);
// here I should use something like cs.registerOutParameter("result", OracleTypes.VARCHAR);
cs.execute();
PL/SQL関数のパラメータは次のとおりです。
CREATE OR REPLACE FUNCTION get_proc_name
(
in_proc_type IN NUMBER, /*1 - insert, 2 - update, 3 - delete, 4 - select*/
in_table_name IN VARCHAR2 := NULL,
in_table_id IN NUMBER := NULL,
in_table_type_id IN NUMBER := NULL,
is_new IN NUMBER := 0
) RETURN VARCHAR2
問題は、結果をoutパラメータとして登録し、それをoracleからjavaに取得する方法です。関数からパラメータの名前を知っているので、名前でin / outパラメータを登録できますが、関数の結果を取得する方法、変数名がどのように使用するかがわかりません。
マニュアルでは、関数ではなく、プロシージャを使用したin/outパラメータの使用法についてのみ説明しています。
Oracleバージョン:11.1.0.6.0 Javaバージョン:1.6.0_14