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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

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