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

IN पैरामीटर के रूप में तालिका प्रकार के साथ संग्रहीत कार्यविधि का उपयोग करके Varchar2 डेटा सम्मिलित करने में असमर्थ

आपके कोड से कुछ छोटे परिवर्तन - 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 ){} } }}

  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. एसक्यूएल ओरेकल शुरुआती प्रश्न

  3. ओरेकल पदानुक्रमित क्वेरी शामिल होने से खंड शुरू करें

  4. अपवाद होने पर डेटाबेस कनेक्शन को बंद करने के लिए सर्वश्रेष्ठ डिज़ाइन पैटर्न

  5. SOUNDEX () Oracle में फ़ंक्शन