例: ARRAY型パラメータのjava.sql.Arrayインターフェースの使用 - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL外部ルーチン プログラミング

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/uhh1512082756414.ditamap
dita:ditavalPath
ja-JP/uhh1512082756414.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

例: 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);
      }
}