संग्रह का उपयोग करें:
प्रक्रिया बनाएं या बदलें RQUERY1(I_PRODUCT SYS.ODCIVARCHAR2LIST में, I_MODEL SYS.ODCIVARCHAR2LIST में, I_TYPE SYS.ODCIVARCHAR2LIST, O_Cursor OUT SYS_REFCINORT I ) p ON t.PRODUCT =p.COLUMN_VALUE INNER JOIN TABLE(I_MODEL) m ON t.MODEL =m.COLUMN_VALUE INER JOIN TABLE(I_TYPE) y ON t.TYPE =y.COLUMN_VALUE;/
फिर आप इसे जावा में इस तरह कॉल कर सकते हैं:
आयात करें .jdbc.internal.OracleTypes; oracle.sql.ARRAY आयात करें; oracle.sql.ArrayDescriptor आयात करें; पब्लिक क्लास टेस्टडेटाबेस {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग तर्क []) {कोशिश करें {Class.forName ("oracle.jdbc.OracleDriver"); कनेक्शन कॉन =DriverManager.getConnection ("jdbc:oracle:पतला:@ url:पोर्ट:sid", "उपयोगकर्ता नाम", "पासवर्ड"); स्ट्रिंग [] उत्पाद ={ "उत्पाद 1", "उत्पाद 2", "उत्पाद 3"}; स्ट्रिंग [] मॉडल ={"मॉडल 1", "मॉडल 2", "मॉडल 3"}; स्ट्रिंग [] प्रकार ={"टाइप 1", "टाइप 2", "टाइप 3"}; ArrayDescriptor des =ArrayDescriptor.createDescriptor ("SYS.ODCIVARCHAR2LIST", con); कॉल करने योग्य स्टेटमेंट सेंट =con.prepareCall ("कॉल टेस्ट। RQUERY1 (?,?,?,?)"); st.setArray(1, नया ARRAY(des, con, products)); st.setArray( 2, new ARRAY(des, con, model)); st.setArray( 3, नया ARRAY(des, con, type)); st.registerOutParameter( 4, OracleTypes.CURSOR); st.execute (); परिणामसेट कर्सर =((OracleCallableStatement)st).getCursor(4); जबकि (कर्सर.नेक्स्ट ()) {इंट आईडी =कर्सर.getInt(1); स्ट्रिंग उत्पाद =कर्सर.गेटस्ट्रिंग (2); स्ट्रिंग मॉडल =कर्सर। गेटस्ट्रिंग (3); स्ट्रिंग प्रकार =कर्सर। गेटस्ट्रिंग (4); System.out.println ( String.format ("आईडी:% 5d", आईडी)); System.out.println( String.format ("उत्पाद:%s\t", उत्पाद)); System.out.println ( String.format ("मॉडल:% s", मॉडल)); System.out.println ( String.format ("टाइप:% s", टाइप करें)); } } पकड़ें (ClassNotFoundException | SQLException e) { System.out.println(e); } }}