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.
- 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
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();
}