Das habe ich mit ARRAY
nicht gemacht aber es sollte funktionieren. Zuerst müssen Sie out
registrieren Parameter Ihrer Funktion. So kann es sein.
private final String PRODECURE_NAME = "{? = call <ProcedureName>(?,?,?)}";
Connection con = null;
CallableStatement cs = null;
try {
con = DAOFactory.getDatabaseConnection();
cs = con.prepareCall(PRODECURE_NAME);
cs.registerOutParameter(1, java.sql.Types.ARRAY);
cs.setYourType(2, <yourData>);
cs.setYourType(3, <yourData>);
cs.setYourType(4, <yourData>);
cs.execute();
Array arr = cs.getArray(1);
if (arr != null) {
String[] data = (String[]) arr.getArray();
}
}
catch (SQLException ex) {
Logger.getLogger(OracleLiekDAO.class.getName()).log(Level.SEVERE, null, ex);
try {
con.rollback();
}
}
finally {
if (con != null) {
try {
con.close();
}
catch (SQLException ex) {
Logger.getLogger(OracleLiekDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Probieren Sie diesen Mann aus und geben Sie mir dann eine Antwort, ob es geht oder nicht.
BEARBEITEN:
Diese Zeichen ? stellt einen Parameter dar, den Sie einstellen werden (er wird als parametrisiert bezeichnet). Also dies:
cs.setYourType(2, <yourData>);
cs.setYourType(3, <yourData>);
cs.setYourType(4, <yourData>);
bedeutet, dass Sie Ihre drei Parameter (?) festlegen, der erste Parameter der Methode ist der Spaltenindex und der zweite sind Ihre Daten Ihres spezifischen Typs.
BEARBEITEN 2:
Es tut mir leid, dass ich eine schlechte Lösung geschrieben habe, die bereits aktualisiert wurde. Überprüfen Sie den Code jetzt und versuchen Sie es.