सहयोगी सरणी का उपयोग न करें - संग्रह का उपयोग करें:
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
और नए तरीकों का उपयोग करना।