Tôi đã không làm điều đó với ARRAY
nhưng nó sẽ hoạt động. Đầu tiên, bạn phải đăng ký out
tham số của chức năng của bạn. Vì vậy, nó có thể như thế này.
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);
}
}
}
Hãy thử người đàn ông này và cho tôi sau đó càng ngày càng ướt nó có làm được hay không.
CHỈNH SỬA:
Những ký tự này ? đại diện cho một tham số mà bạn sẽ đặt (nó được đặt tên là tham số). Vì vậy, thế này:
cs.setYourType(2, <yourData>);
cs.setYourType(3, <yourData>);
cs.setYourType(4, <yourData>);
có nghĩa là bạn đặt ba tham số của mình (?), tham số đầu tiên của phương thức là chỉ mục cột và thứ hai là dữ liệu của bạn thuộc loại cụ thể của bạn.
CHỈNH SỬA 2:
Rất tiếc, tôi đã viết giải pháp không tốt, đã được cập nhật nên hãy kiểm tra mã ngay bây giờ và thử nó.