例: 1-D ARRAY型パラメータのjava.sql.Arrayインターフェースの使用
CREATE TYPE INTARRAY AS INTEGER ARRAY[5]; CREATE PROCEDURE GET_ARRAY(IN A1 INTARRAY) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'UDF_JAR:UserDefinedFunctions.get_array'; public static void get_array(java.sql.Array A1) throws SQLEXception { System.out.println ("Array is of type "+A1.getBaseTypeName()); System.out.println ("Array element type:" + A1.getBaseType()); // get Array elements int[] values = (Int[]) A1.getArray(); for (int i=0; i<values.length; i++) { System.out.println("element " + i + " = "+values[i]); } }
例: n-D ARRAY型パラメータのjava.sql.Arrayインターフェースの使用
この例では、n-D ARRAY型パラメータのjava.sql.Arrayインターフェースを使用し、結果セットとして要素を取得します。
CREATE TYPE SHOTS AS INTEGER ARRAY[1:3][1:3][1:3]; CREATE PROCEDURE GET_ND_ARRAY(IN A1 SHOTS) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'UDF_JAR:UserDefinedFunctions.get_nd_array'; public static void get_nd_array(java.sql.Array A1) throws SQLException { System.out.println ("Array is of type "+A1.getBaseTypeName()); System.out.println ("Array element type:" + A1.getBaseType()); System.out.println ("Array num dimensions:" + A1.getNumDimensions()); // get Array elements as a result set ResultSet nDArrayElements; List<Integer> lowerBounds = new ArrayList<Integer>(); List<Integer> upperBounds = new ArrayList<Integer>(); lowerBounds.add(1); lowerBounds.add(1); lowerBounds.add(1); upperBounds.add(3); upperBounds.add(3); upperBounds.add(3); nDArrayElements = A1.getResultSet_nD(lowerBounds, upperBounds); while (nDArrayElements.next()) { List<Integer> elementNum = nDArrayElements.getObject(1); int elementItem = nDArrayElements.getInt(2); System.out.println ("Array element index: " + elementNum + "element value: " + elementItem); } }