Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

जावा में Oracle नेस्टेड तालिका में सम्मिलित करना

जावा सरणी को संग्रह के रूप में पास करें:

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 . का उपयोग करके )

आयात करें .sql.ARRAY; सार्वजनिक वर्ग LoadOracleObjectCollection {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {कोशिश करें {Class.forName ("oracle.jdbc.OracleDriver"); कनेक्शन कॉन =DriverManager.getConnection ("jdbc:oracle:पतला:@ localhost:1521:orcl", "test_user", "पासवर्ड"); ऑब्जेक्ट [] objs =नया ऑब्जेक्ट [] {con.createStruct ("NESTED_ROW_TYPE", नया ऑब्जेक्ट [] {"Q", 99}), con.createStruct ("NESTED_ROW_TYPE", नया ऑब्जेक्ट [] {"R", 999} )}; ARRAY a =((OracleConnection) con).createARRAY("NESTED_TBL_TYPE", objs); रेडीस्टेडमेंट सेंट =con.prepareCall ("कंटेनर_टीबीएल में डालें (ए, बी, नेस्टेड_टीबीएल) वैल्यू (?,?,?)"); सेंट सेटस्ट्रिंग (1, "एक्स"); सेंट सेटस्ट्रिंग (2, "वाई"); ((OraclePreparedStatement) सेंट).setARRAY( 3 , a); st.execute (); सेंट बंद (); बंद करें (); } पकड़ें (ClassNotFoundException | SQLException e) {System.out.println(e); } }}

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 ढूंढ़ना चाहिए अपने डेटाबेस के लिए संस्करण और उसका उपयोग करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जावा में उपयोग में ओरेकल की वापसी (जेडीबीसी, तैयार वक्तव्य)

  2. CX_Oracle - Oracle से पंडों के डेटाफ़्रेम में डेटा आयात करें

  3. सी # से ओरेकल संग्रहीत प्रक्रिया में तालिका-मूल्यवान पैरामीटर कैसे पास करें?

  4. Oracle में एक साथ कई स्ट्रिंग्स को कैसे बदलें?

  5. मैं SQLPLUS का उपयोग करके CSV स्वरूपित फ़ाइल में कैसे स्पूल करूँ?