sto passando un parametro ad un PreparedStatement come questo:Riutilizzare un parametro in PreparedStatement?
public void getNodes(String runId, File file, Connection conn) {
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(Mat.queries.get("NettingNode.QUERY"));
ps.setString(1, runId);
ps.setFetchSize(10000);
rs = ps.executeQuery();
// etc.
} catch (Exception e) {
logger.error(e, e);
} finally {
close(rs, ps);
}
}
e la query si presenta così:
select * from table_1 where run_id = ?
Ora voglio modificare la mia domanda come questa, e riutilizzare il primo parametro (sia ?
avrebbe usato il parametro RunID):
select * from table_1 where run_id = ?
union
select * from table_2 where run_id = ?
che è possibile, senza fare questo:
ps.setString(1, runId);
ps.setString(2, runId);
Off-topic: In caso di C/C++ è possibile. Funzioni OCIDefineByPos, OCIDefineByName si comportano come previsto. Penso che in caso di JDBC questa funzionalità sia stata sacrificata per essere compatibile con i database, che non la supportano. Quindi forse i driver Oracle JDBC hanno qualche estensione proprietaria per questo. – ibre5041