Db2 11.1

Aufruf von gespeicherten Prozeduren mit ARRAY-Parametern in JDBC-Anwendungen

JDBC-Anwendungen, die unter dem IBM® Data Server Driver for JDBC and SQLJ ausgeführt werden, können gespeicherte Prozeduren aufrufen, die über ARRAY-Parameter verfügen.

ARRAY-Parameter werden in gespeicherten Prozeduren unter Db2 auf Linux-, UNIX-und Windows-Systemen Version 9.5 und höher unterstützt.

ARRAY-Parameter werden in nativen SQL-Prozeduren unter Db2 for z/OS Version 11 und höher unterstützt. Programme, die gespeicherte Db2 for z/OS-Prozeduren mit Feldgruppenparametern aufrufen, müssen IBM Data Server Driver for JDBC and SQLJ type 4 connectivity verwenden.

Sie können java.sql.Array -Objekte als Argumente für das Aufrufen von gespeicherten Prozeduren mit Feldgruppenparametern verwenden.

Verwenden Sie für IN-oder INOUT-Parameter die Methode DB2Connection.createArrayOf (JDBC 3.0) oder die Methode Connection.createArrayOf (JDBC 4.0 oder höher), um ein Objekt java.sql.Array zu erstellen. Verwenden Sie die Methode CallableStatement.setArray oder die Methode CallableStatement.setObject , um ein Objekt java.sql.Array einem Parameter der gespeicherten Prozedur ARRAY zuzuordnen.

Sie können einen OUT-ARRAY-Parameter für einen Aufruf einer gespeicherten Prozedur registrieren, indem Sie java.sql.Types.ARRAY als Parametertyp in einem Aufruf CallableStatement.registerOutParameter angeben.

Es gibt zwei Möglichkeiten, Daten aus einem ARRAY-Ausgabeparameter abzurufen:
  • Verwenden Sie die Methode CallableStatement.getArray , um die Daten in ein Objekt java.sql.Array abzurufen, und verwenden Sie die Methode java.sql.Array.getArray , um den Inhalt des Objekts java.sql.Array in eine Java™-Feldgruppe abzurufen.
  • Verwenden Sie die Methode CallableStatement.getArray , um die Daten in ein Objekt java.sql.Array abzurufen. Verwenden Sie die Methode java.sql.Array.getResultSet () , um die Daten in ein ResultSet -Objekt abzurufen. Verwenden Sie ResultSet -Methoden, um Elemente des Arrays abzurufen. Jede Zeile von ResultSet enthält zwei Spalten:
    • Ein Index in das Array, der mit 1 beginnt
    • Das Array-Element
Beispiel: Nehmen Sie an, dass die Eingabe-und Ausgabeparameter IN_PHONE und OUT_PHONE in der gespeicherten Prozedur GET_EMP_DATA Arrays sind, die wie folgt definiert sind:
CREATE TYPE PHONENUMBERS AS VARCHAR(10) ARRAY[5]

Rufen Sie GET_EMP_DATA mit den beiden Parametern auf.

Connection con;
CallableStatement cstmt;
ResultSet rs;
java.sql.Array inPhoneData;
…
cstmt = con.prepareCall("CALL GET_EMP_DATA(?,?)");
                                            // CallableStatement-Objekt erstellen
String[] charArray = new String[] {"a", "b", "c"};        
inPhoneData = conn.createArrayOf("CHAR", charArray);   
cstmt.setArray(1, inPhoneData);             // Eingabeparameter festlegen
cstmt.registerOutParameter (2, java.sql.Types.ARRAY);         
                                            // Ausgabeparameter registrieren
cstmt.executeUpdate();                      // Gespeicherte Prozedur aufrufen
Array outPhoneData = cstmt.getArray(2);                                   
                                            // Ausgabeparameterarray abrufen
System.out.println("Parameter values from GET_EMP_DATA call: ");
String [] outPhoneNums = (String [])outPhoneData.getArray();
                                            // Ausgabedaten aus JDBC-
                                            // Array-Objekt in Java-
                                            // Zeichenfolgenarray abrufen
for(int i=0; i<outPhoneNums.length; i++) {
  System.out.print(outPhoneNums[i]); 
  System.out.println();  
}