आपके कोड से कुछ छोटे परिवर्तन - oracle.sql.ARRAY
. का उपयोग करके के बजाय java.sql.Array
और फिर OracleConnection.setARRAYAtName()
. का उपयोग करके के बजाय Connection.setObject()
पैरामीटर को बाइंड करने के लिए।
(नोट:यह Oracle 11.2.0.1 के साथ Oracle ड्राइवर ojdbc6.jar का उपयोग करके काम करता है)
Oracle सेटअप;
क्रिएट टाइप rec_type as OBJECT(id NUMBER, descr VARCHAR2(100));/ rec_type की तालिका के रूप में TYPE tab_type बनाएं;/rec_type का टेबल बॉम बनाएं;/प्रक्रिया बनाएं pBom(t सभी के लिए tab_type में t) बॉम वैल्यू टी(i);END;/
में t INSERT INTO INDICES में
जावा :
आयात करें .sql.ARRAY; आयात ओरेकल। कोशिश करें { Class.forName ("oracle.jdbc.OracleDriver"); con =DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "username", "password"); ArrayDescriptor des =ArrayDescriptor.createDescriptor ("TAB_TYPE", con); ऑब्जेक्ट [] o1 ={1, "एबीसी"}; ऑब्जेक्ट [] o2 ={3, "डीईएफ"}; ऑब्जेक्ट [] o3 ={2, "जीएचआई"}; ARRAY objs =नया ARRAY (des, con, new Object[][]{ o1, o2, o3}); कॉल करने योग्य स्टेटमेंट सेंट =con.prepareCall ("{कॉल पीबीओएम (:गिरफ्तार)}"); ((OracleCallableStatement) सेंट).setARRAYAtName("arr", objs); st.execute (); } पकड़ें (ClassNotFoundException | SQLException e) {System.out.println(e); } अंत में {कोशिश करें {अगर (कोन! =शून्य) {con.close (); } } पकड़ें ( SQLException e ){} } }}