मैंने ARRAY
. के साथ ऐसा नहीं किया लेकिन यह काम करना चाहिए। सबसे पहले आपको out
पंजीकरण करना होगा आपके फ़ंक्शन का पैरामीटर। तो यह ऐसा हो सकता है।
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);
}
}
}
इस आदमी की कोशिश करो और मुझे दे दो फिर चाहे वह करो या नहीं।
संपादित करें:
ये चार ? एक पैरामीटर का प्रतिनिधित्व करता है जिसे आप सेट करेंगे (इसे पैरामीट्रिज्ड नाम दिया गया है)। तो यह:
cs.setYourType(2, <yourData>);
cs.setYourType(3, <yourData>);
cs.setYourType(4, <yourData>);
इसका मतलब है कि आपने अपने तीन पैरामीटर (?) सेट किए हैं, विधि का पहला पैरामीटर कॉलम इंडेक्स है और दूसरा आप अपने विशिष्ट प्रकार का डेटा हैं।
संपादित करें 2:
क्षमा करें, मैंने खराब समाधान लिखा है, पहले से अपडेट किया गया है इसलिए अभी कोड जांचें और इसे आजमाएं।