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

मैं एक संग्रहित प्रक्रिया आउटपुट पैरामीटर कैसे प्राप्त करूं जो काम करने के लिए एक सरणी है?

सहयोगी सरणी का उपयोग न करें - संग्रह का उपयोग करें:

CREATE TYPE StringArray IS TABLE OF VARCHAR2(4000);
CREATE TYPE CLOBArray   IS TABLE OF CLOB;

तब आप यह कर सकते हैं:

public void testString(Connection connection) {
  String[] values = { "alpha", "beta", "gamma" };
  try {
    OracleConnection oc = (OracleConnection) connection;

    ARRAY stringArray = oc.createARRAY( "STRINGARRAY", values ); // Upper case identifier

    OracleCallableStatement st = (OracleCallableStatement) oc.prepareCall(
      "begin test.upper( :in_array, :out_array ); end;"
    );

    st.setARRAYAtName( "in_array", stringArray );
    st.registerOutParameter( "out_array", Types.ARRAY, "STRINGARRAY"); // Upper case again
    st.execute();

    String[] result = (String[])st.getARRAY( 2 ).getArray();

    System.out.println("Length: " + result.length);
    System.out.println("First: " + result[0]);
  } (catch SQLException e) {
    // Handle error
  }
}

यदि आपको अपनी प्रक्रिया में इनपुट के रूप में पीएल/एसक्यूएल सहयोगी सरणी का उपयोग करना चाहिए तो एक ऐसा फ़ंक्शन लिखें जो संग्रह लेता है और उपयुक्त प्रकार के सहयोगी सरणी को आउटपुट करता है और फिर उसे कॉल करता है:

BEGIN TEST.UPPER( TO_ASSOC_ARRAY( :in_collection ), :out_array ); END;

नोट:यह उत्तर ojdbc6.jar में Oracle ड्राइवर का उपयोग कर रहा है, जिसमें OracleConnection.createOracleArray() प्रतीत नहीं होता है। विधि लेकिन उम्मीद है कि यह पोर्टेबल होगा oracle.sql.ARRAY करने के लिए java.sql.Array और नए तरीकों का उपयोग करना।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. R12 . में J2EE (OC4J) के लिए Oracle के कंटेनर्स

  2. SQL त्रुटि:ORA-02291:अखंडता बाधा

  3. Oracle.DataAccess विजुअल स्टूडियो 2013 में चयन के लिए उपलब्ध नहीं है

  4. ओरेकल सीक्वेंस नेक्स्टवल नंबर आगे पीछे कूद रहा है

  5. वेब्रिक प्रतिक्रिया देने में बहुत धीमा है। इसे कैसे तेज करें?