ストアド プロシージャ (Oracle) を呼び出したいと思います。私のプロシージャー呼び出しは動的であるため、プロシージャーのパラメーターを動的に管理する必要があります。instanceof
問題は、プライマリ型ではうまく機能しないため、キーワードの使用を避けたいことです。そのようなプロシージャを呼び出すよりクリーンな方法はありますか?
public void executeProcedure(StoredProcedure proc) {
LinkedList<ProcedureParameter<?>> parameters = proc.getParameters();
CallableStatement statement = connection.prepareCall("{ call MY_PACKAGE.MY_PROCEDURE( ?, ?, ? ) }");
for (int i = 0; i < parameters.size(); i++) {
Object paramValue = parameters.get(i).getValue();
// Beginning of smelly code
if (paramValue instanceof String) {
statement.setString(i + 1, (String) paramValue);
}
else if (paramValue instanceof ...) {
...
}
else {
...
}
// End of smelly code
}
statement.execute();
}
public class ProcedureParameter<E> {
private String name;
private E value;
public ProcedureParameter(String name) {
this.name = name;
}
public ProcedureParameter(String name, E value) {
this.name = name;
this.value = value;
}
// Getters and setters
}
ご意見ありがとうございます。