जावा सरणी को संग्रह के रूप में पास करें:
Oracle 12c सेटअप :
पासवर्ड द्वारा पहचाने गए उपयोगकर्ता test_user बनाएं; test_user को सत्र बनाएं; उपयोगकर्ताओं पर असीमित test_user QUOTA उपयोगकर्ता बदलें; प्रकार बनाएं test_user.nested_row_type AS OBJECT (एक CHAR(1), b INTEGER);/प्रकार test_user बनाएं। Nested_tbl_type test_user.nested_row_type की तालिका के रूप में;/तालिका बनाएं test_user.container_tbl(a CHAR(1), b CHAR(1), Nested_tbl test_user.nested_tbl_type) नेस्टेड तालिका Nested_tbl स्टोर के रूप में Nested_tbl_tbl;
जावा :(ojdbc7.jar
. का उपयोग करके )
Oracle क्वेरी
सेलेक्ट c.a, c.b, n.a, n.bFROM test_user.container_tbl c CROSS JOIN TABLE(c.nested_tbl) n;
परिणाम :
A B A B- - - -----------x y Q 99x y R 999
पुराने सिंटैक्स वाला संस्करण :
केवल एक डमी क्वेरी (डेटाबेस में डालने के बजाय) से गुजरने और यह दिखाने के लिए कि वस्तुओं की एक सरणी कैसे प्राप्त करें:
आयात करें .sql.ARRAY; आयात ओरेकल। { Class.forName ("oracle.jdbc.OracleDriver"); कनेक्शन कॉन =DriverManager.getConnection ("jdbc:oracle:पतला:@ localhost:1521:orcl", "test_user", "पासवर्ड"); OracleConnection oc =(OracleConnection) con; स्ट्रक्चर डिस्क्रिप्टर एसडी =नया स्ट्रक्चर डिस्क्रिप्टर ("NESTED_ROW_TYPE", oc); ArrayDescriptor विज्ञापन =नया ArrayDescriptor ("NESTED_TBL_TYPE", oc); सरणी सरणी =नई सरणी (विज्ञापन, महासागर, नई संरचना [] {नई संरचना (एसडी, महासागर, नई वस्तु [] {'पी', 99}), नई संरचना (एसडी, महासागर, नई वस्तु [] { 'क्यू' ,999 } ) } ); OraclePreparedStatement st =(OraclePreparedStatement) con.prepareStatement ("चुनें? DUAL से"); st.setARRAY(1, सरणी); परिणामसेट आरएस =st.executeQuery (); जबकि (rs.next ()) {ऑब्जेक्ट [] structs =(ऑब्जेक्ट []) rs.getArray (1)। getArray (); के लिए (ऑब्जेक्ट स्ट्रक्चर:स्ट्रक्चर्स) {डेटाम [] डेटम =((स्ट्रक्चर) स्ट्रक्चर)। getOracleAttributes (); System.out.println (डेटाम्स [0]। स्ट्रिंगवैल्यू () + "," + डेटम [1]। इंटवैल्यू ())); } } सेंट बंद (); बंद करें (); } पकड़ें (ClassNotFoundException | SQLException पूर्व) { System.out.println (उदा. getMessage ()); उदा.प्रिंटस्टैकट्रेस (); } } }आउटपुट :
P, 99Q, 999
यह मेरे लिए ojdbc6.jar
. के साथ संकलित है और Oracle 11gR2 के साथ काम किया। आपको सही ojdbc
ढूंढ़ना चाहिए अपने डेटाबेस के लिए संस्करण और उसका उपयोग करें।