この節では、Java UDFおよび外部ストアド プロシージャのパラメータに対してサポートされるSQLデータ型と、SQLデータ型がJavaデータ型にマッピングされる仕組みについて説明します。
デフォルトのパラメータ マッピング規則は単純です。つまり、SQLデータ型はJavaプリミティブ(単純マッピング)に、マッピングされます。適切なプリミティブが存在しない場合は、Javaクラス(オブジェクト マッピング)にマッピングされます。
パラメータがNULLを渡したり戻したりことができるUDFまたは外部ストアド プロシージャでは、Javaプリミティブに単純にマッピングすることは推奨できません。
一部の型には、複数のタイプのマッピングを使用できます。デフォルト マッピングは、追加のマッピングとともに識別されます。Java外部ルーチン作成者は、要件に応じてSQL型がマッピングされるJavaデータ型を選択できます。
デフォルトのマッピングを上書きするには、CREATE/REPLACE FUNCTION文またはCREATE/REPLACE PROCEDURE文のEXTERNAL NAME句で、Javaメソッドのパラメータ リスト内のマッピングを明示的に指定しなければなりません。
例: デフォルト マッピングを持つDISTINCT型UDT
この例では、EXTERNAL NAME句のJavaルーチン宣言にパラメータ リストは含まれません。そのため、単純なマッピング(デフォルト)がMyInt UDTに使用されます。
CREATE TYPE MYINT AS INTEGER FINAL;
REPLACE FUNCTION MyScore(A1 MYINT) RETURNS MYINT LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'UDF_JAR:UserDefinedFunctions.myScore';
public static int myScore(int a) throws SQLException
例: デフォルト以外のマッピングによるST_Geometry
この例では、ST_Geometryクラスへのデフォルト以外のマッピングを使用するST_Geometryパラメータを備えたJava UDFを示します。
REPLACE FUNCTION get_Geom(G1 ST_GEOMETRY) RETURNS INTEGER LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'UDF_JAR:UserDefinedFunctions.get_geom(com.teradata.fnc.ST_Geometry) returns int';
public static int get_geom(com.teradata.fnc.ST_Geometry g1) throws SQLException
ARRAY/VARRAY
ARRAY/VARRAY SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.sql.Array |
com.teradata.fnc.Arrayクラスは、java.sql.Arrayインターフェースを実装します。
1-DとN-D配列の両方は、Javaの外部ストアド プロシージャおよびUDFのパラメータおよび戻り値の型としてサポートされます。
BIGINT
BIGINT SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
long (J) | java.lang.Long |
CREATE PROCEDURE F1 (IN A BIGINT, OUT B BIGINT) LANGUAGE JAVA ...;
public static void f1(long a, long[] b) { ... }
CREATE PROCEDURE F1 (IN A BIGINT, OUT B BIGINT) LANGUAGE JAVA ... EXTERNAL NAME 'j1:c1.f1(java.lang.Long, java.lang.Long[])';
public static void f1(Long a, Long[] b) { ... }
BLOB(バイナリ ラージ オブジェクト)
BLOB SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.sql.Blob |
CREATE PROCEDURE F1 (IN A BLOB, OUT B BLOB) LANGUAGE JAVA ...;
public static void f1(java.sql.Blob a, java.sql.Blob[] b) { ... }
BYTE
BYTE SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | byte[] ([B) |
CREATE PROCEDURE F1 (IN A BYTE[30], OUT B BYTE[30]) LANGUAGE JAVA ...;
public static void f1(byte[] a, byte[][] b) { ... }
BYTEINT
BYTEINT SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
byte (B) | java.lang.Byte |
CREATE PROCEDURE F1 (IN A BYTEINT, OUT B BYTEINT) LANGUAGE JAVA ...;
public static void f1(byte a, byte[] b) { ... }
CREATE PROCEDURE F1 (IN A BYTEINT, OUT B BYTEINT) LANGUAGE JAVA ... EXTERNAL NAME 'j1:c1.f1(java.lang.Byte, java.lang.Byte[])';
public static void f1(Byte a, Byte[] b) { ... }
CHARACTER/CHAR
CHARACTER SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.lang.String |
CREATE PROCEDURE F1 (IN A CHAR(30), OUT B CHAR(30)) LANGUAGE JAVA ...;
public static void f1(String a, String[] b) { ... }
CLOB(文字ラージ オブジェクト)
CLOB SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.sql.Clob |
CREATE PROCEDURE F1 (IN A CLOB, OUT B CLOB) LANGUAGE JAVA ...;
public static void f1(java.sql.Clob a, java.sql.Clob[] b) { ... }
DATASET
DATASET SQLデータ型は、次のJavaデータ型にマップします。
格納形式 | 単純マッピング | オブジェクト マッピング |
---|---|---|
DATASET STORAGE FORMAT AVRO | なし |
|
DATASET STORAGE FORMAT CSV | なし |
|
Avroストレージ形式のDATASET型の場合、デフォルト マッピングはjava.sql.Blobになります。追加のマッピングは、DATASET型をbyte[]にマッピングするために提供されます。このマッピングは、DATASETサイズが64Kを超えない場合に使用できます。これによりLOBベースのパラメータ マッピングよりもパフォーマンスが向上します。
Avroストレージ形式のDATASET型は変換形式に変換されます。これはインスタンスに対して定義されているスキーマで、UTF-8でエンコードされ、NULLで終了し、その後にバイナリ コード化されたAvro値が続きます。
CSVストレージ形式のDATASET型の場合、デフォルト マッピングはjava.sql.Clobになります。追加のマッピングは、DATASET型をjava.lang.Stringにマッピングするために提供されます。このマッピングは、DATASETサイズが64Kを超えない場合に使用できます。これによりLOBベースのパラメータ マッピングよりもパフォーマンスが向上します。
CSVストレージ形式のDATASET型がjava.sql.Clobまたはjava.lang.Stringにマッピングされる場合、CSVデータのみが含まれ、オプション スキーマはまったく含まれません。
CREATE PROCEDURE F1 (IN A DATASET(8000) Storage Format Avro, OUT B DATASET(8000) Storage Format Avro) LANGUAGE JAVA ...;
public static void f1(java.sql.Blob a, java.sql.Blob[] b) { ... }
DATE
DATE SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.sql.Date |
CREATE PROCEDURE F1 (IN A DATE, OUT B DATE) LANGUAGE JAVA ...;
public static void f1(java.sql.Date a, java.sql.Date[] b) { ... }
DECIMAL/NUMERIC
DECIMAL/NUMERIC SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.math.BigDecimal |
CREATE PROCEDURE F1 (IN A DECIMAL(8,2), OUT B DECIMAL(8,2)) LANGUAGE JAVA ...;
public static void f1(BigDecimal a, BigDecimal[] b) { ... }
FLOAT / DOUBLE PRECISION / REAL
FLOAT / DOUBLE PRECISION / REAL SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
double (D) | java.lang.Double |
CREATE PROCEDURE F1 (IN A FLOAT, OUT B FLOAT) LANGUAGE JAVA ...;
public static void f1(double a, double[] b) { ... }
CREATE PROCEDURE F1 (IN A FLOAT, OUT B FLOAT) LANGUAGE JAVA ... EXTERNAL NAME 'j1:c1.f1(java.lang.Double, java.lang.Double[])';
public static void f1(Double a, Double[] b) { ... }
Geospatialデータ型: MBB
Geospatial MBB SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし |
|
MBB型はデフォルトでjava.lang.Stringにマッピングします。形式は(Xmin,Ymin,Zmin,Xmax,Ymax,Zmax)です。
追加のマッピングはMBBをプリミティブ型ダブル配列double[]にマッピングします。配列には、Xmin、Ymin、Zmin、Xmax、Ymax、およびZmax値に対応する6つのダブル値が含まれます。
MBB型がSTRUCTURED型UDT属性の場合、デフォルト マッピング(java.lang.String)が適用されます。MBB型はどの入れ子レベルでも可能です。
Geospatialデータ型: MBR
Geospatial MBR SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし |
|
MBR型はデフォルトでjava.lang.Stringにマッピングされます。形式は(Xmin,Ymin,Xmax,Ymax)です。
追加のマッピングはMBRをプリミティブ型ダブル配列double[]にマッピングします。配列には、Xmin、Ymin、Xmax、およびYmax値に対応する4つのダブル値が含まれます。
MBR型がSTRUCTURED型UDT属性の場合、デフォルト マッピング(java.lang.String)が適用されます。MBR型はどの入れ子レベルでも可能です。
Geospatialデータ型: ST_Geometry
Geospatial ST_Geometry SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし |
|
ST_Geometry型は、WKT (Well-Known Text)表現に変換され、ClobとしてJavaルーチンに渡されます。Javaルーチンに渡されたClob値には、ジオメトリ オブジェクト内に含まれる空間参照識別子(SRID)は含まれません。
マッピングは、ST_Geometry型をjava.sql.Blobにマッピングするために提供されます。Geospatial型はWKB (Well-Known Binary)表現に変換され、BlobとしてJavaルーチンに渡されます。Blobには、ジオメトリ オブジェクト内に含まれるSRIDは含まれません。
マッピングは、ST_Geometry型をcom.teradata.fnc.ST_Geometryクラスにマッピングするために提供されます。ST_Geometryオブジェクトを使用して、ジオメトリ値のWKT、WKB、およびSRIDを取得したり、ジオメトリ値をWKT値またはWKB値(提供されるSRIDで)に設定したりできます。これは、SRID値の読み取りまたは設定を行なえる唯一のマッピングです。
非LOBベースのマッピングは、java.lang.String (LATIN文字セットのWKT表現)およびbyte[] (WKB表現)に提供されます。これらのマッピングは、ST_Geometryパラメータ サイズが64Kを超えないことがわかっている場合に使用できます。これにより、LOBベースのパラメータマッピングよりもパフォーマンスが向上します。
ST_Geometry属性を持つSTRUCTURED型UDTをJava UDFまたは外部ストアド プロシージャに渡すことはできません。
- ジオメトリはWKB形式でフィールドに内部的に保存されるため、CLOBのWKT形式に変換する必要はありません。
- ユーザーはジオメトリ データを処理するためにテキスト形式を解析する必要があります。バイナリ形式はテキストを解析せずに簡単にトラバースできます。
- バイナリ形式には、座標の値と、それらとテキスト形式で表わす文字列を表わす浮動小数点が含まれています。そのため、座標の値のバイナリ形式の精度は少し良くなることがあります。
- WKB形式はWKT形式よりも小さくなります。
この例では、ST_Geometryクラスへのデフォルト以外のマッピングを使用するST_Geometryパラメータを備えたJava UDFを示します。
REPLACE FUNCTION get_Geom(G1 ST_GEOMETRY) RETURNS INTEGER LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'UDF_JAR:UserDefinedFunctions.get_geom(com.teradata.fnc.ST_Geometry) returns int';
public static int get_geom(com.teradata.fnc.ST_Geometry g1) throws SQLException
INTEGER
INTEGER SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
int (I) | java.lang.Integer |
CREATE PROCEDURE F1 (IN A INTEGER, OUT B INTEGER) LANGUAGE JAVA ...;
public static void f1(int a, int[] b) { ... }
CREATE PROCEDURE F1 (IN A INTEGER, OUT B INTEGER) LANGUAGE JAVA ... EXTERNAL NAME 'j1:c1.f1(java.lang.Integer, java.lang.Integer[])';
public static void f1(Integer a, Integer[] b) { ... }
Interval SQLデータ型
- INTERVAL DAY
- INTERVAL DAY TO HOUR
- INTERVAL DAY TO MINUTE
- INTERVAL DAY TO SECOND
- INTERVAL HOUR
- INTERVAL HOUR TO MINUTE
- INTERVAL HOUR TO SECOND
- INTERVAL MINUTE
- INTERVAL MINUTE TO SECOND
- INTERVAL MONTH
- INTERVAL SECOND
- INTERVAL YEAR
- INTERVAL YEAR TO MONTH
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.lang.String |
CREATE PROCEDURE F1 (IN A INTERVAL MONTH, OUT B INTERVAL MONTH) LANGUAGE JAVA ...;
public static void f1(String a, String[] b) { ... }
JSON
JSON SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし |
|
デフォルトのマッピング先はjava.sql.Clobです。
データをバイナリJSON形式で送信するjava.sql.Blobへのマッピングが提供されます。
非LOBベースのマッピングは、java.lang.String (テキスト表現)およびbyte[] (BSON形式)に提供されます。これらのマッピングは、JSONパラメータ サイズが64Kを超えないことがわかっている場合に使用できます。これにより、LOBベースのパラメータマッピングよりもパフォーマンスが向上します。
JSON属性を含むSTRUCTURED型UDTは、すべての入れ子レベルのJava UDFへのパラメータとして使用できます。JSON値は、インライン値としてStringまたはbyte[]にマッピングされます。Lobマッピングはサポートされていません。
CREATE PROCEDURE F1 (IN A JSON(20) CHARACTER SET LATIN, OUT B JSON(40) CHARACTER SET LATIN) LANGUAGE JAVA ...;
public static void f1(java.sql.Clob a, java.sql.Clob[] b) { ... }
NUMBER
NUMBER SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.math.BigDecimal |
CREATE PROCEDURE F1 (INOUT A NUMBER(30,2)) LANGUAGE JAVA ...;
public static void f1(BigDecimal[] a) { ... }
PERIOD
Period SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.sql.Struct |
Periodデータ型はjava.sql.Structにマップされます。com.teradata.fnc.Structクラスはjava.sql.Structインターフェースを実装します。
Period Structオブジェクトの構造は以下のとおりです。
java.sql.Struct{ java.sql.Date, java.sql.Date }
java.sql.Struct{ java.sql.Time, java.sql.Time }
java.sql.Struct{ java.sql.Struct{ java.sql.Time, java.util.Calendar, } java.sql.Struct{ java.sql.Time, java.util.Calendar } }
java.sql.Struct{ java.sql.Timestamp, java.sql.Timestamp }
java.sql.Struct{ java.sql.Struct{ java.sql.Timestamp, java.util.Calendar, } java.sql.Struct{ java.sql.Timestamp, java.util.Calendar } }
Period(Time With Time Zone)およびPeriod(Timestamp With Time Zone)の場合、構造体のTimeオブジェクトまたはTimestampオブジェクトは、入力Time/Timestamp値のローカル時間を保存します。Calendarオブジェクトは入力Time/Timestamp値のタイムゾーン部分のみを保存します。時間、分、秒などのその他の情報は、入力Time/Timestamp値に基づいてCalendarオブジェクトで設定されません。代わりに、この情報は、Calendarオブジェクトが作成されるデフォルト ローカル時間に設定されます。
PERIOD型は任意のレベルのSTRUCTURED型UDTの属性にすることができます。
SMALLINT
SMALLINT SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
short (S) | java.lang.Short |
CREATE PROCEDURE F1 (IN A SMALLINT, OUT B SMALLINT) LANGUAGE JAVA ...;
public static void f1(short a, short[] b) { ... }
CREATE PROCEDURE F1 (IN A SMALLINT, OUT B SMALLINT) LANGUAGE JAVA ... EXTERNAL NAME 'j1:c1.f1(java.lang.Short, java.lang.Short[])';
public static void f1(Short a, Short[] b) { ... }
TD_ANYTYPE
TD_ANYTYPE SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.lang.Object |
ユーザー定義型(UDT)および複合データ型(CDT)は、TD_ANYTYPEパラメータでJava UDFまたは外部ストアド プロシージャに渡すことができます。これらはJavaルーチンのjava.lang.Objectにマッピングできます。オブジェクト タイプは常にデフォルトのマッピング タイプに対応します。例えば、JSON値がTD_ANYTYPEパラメータでJava UDFに渡される場合、Javaルーチンはjava.sql.Clobオブジェクトを受け取ります。
CREATE PROCEDURE F1 (IN A TD_ANYTYPE, INOUT B TD_ANYTYPE) LANGUAGE JAVA ...;
public static void f1(java.lang.Object a, java.lang.Object[] b) { ... }
TIME
TIME SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.sql.Time SQL型によって提供されるナノ秒時間の絶対精度を許可しません
|
CREATE PROCEDURE F1 (IN A TIME, OUT B TIME) LANGUAGE JAVA ...;
public static void f1(java.sql.Time a, java.sql.Time[] b) { ... }
TIME WITH TIME ZONE
TIME WITH TIME ZONE SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし |
|
- このマッピングはSQL型によって提供されるナノ秒時間の絶対粒度を許可しません。
- このマッピングはタイムゾーン オフセットを保持しません。
TIME WITH TIME ZONEをjava.sql.Structにマッピングするマッピングが提供されます。java.sql.Structへのマッピングでは、タイムゾーン値をJavaルーチンに渡すことができます。com.teradata.fnc.Structクラスはjava.sql.Structインターフェースを実装します。
Time with Time Zone java.sql.Struct{ java.sql.Time, java.util.Calendar }
構造体のTimeオブジェクトは、入力Time値のローカル時間を保存します。Calendarオブジェクトは、入力Time値のタイムゾーン部分のみを保存します。時間、分、秒などのその他の情報は、入力Time値に基づいてCalendarオブジェクトで設定されません。代わりに、この情報は、Calendarオブジェクトが作成されるデフォルト ローカル時間に設定されます。
TIME WITH TIME ZONE型がSTRUCTURED型UDT属性または配列要素型である場合、デフォルトのマッピング(java.sql.Time)が適用されます。
CREATE PROCEDURE F1 (IN A TIME WITH TIME ZONE, OUT B TIME WITH TIME ZONE) LANGUAGE JAVA ...;
public static void f1(java.sql.Struct a, java.sql.Struct[] b) { ... }
TIMESTAMP
TIMESTAMP SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.sql.Timestamp |
CREATE PROCEDURE F1 (IN A TIMESTAMP, OUT B TIMESTAMP) LANGUAGE JAVA ...;
public static void f1(java.sql.Timestamp a, java.sql.Timestamp[] b) { ... }
TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH TIME ZONE SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし |
|
TIMESTAMP WITH TIME ZONEデータ型は、デフォルトでjava.sql.Timestampにマップします。このマッピングはタイムゾーン オフセットを保持しません。
TIMESTAMP WITH TIME ZONEをjava.sql.Structにマッピングするマッピングが提供されます。java.sql.Structへのマッピングでは、タイムゾーン値をJavaルーチンに渡すことができます。com.teradata.fnc.Structクラスはjava.sql.Structインターフェースを実装します。
Timestamp with Time Zone java.sql.Struct{ java.sql.Timestamp, java.util.Calendar }
構造体のTimestampオブジェクトは、入力Timestamp値のローカル時間を保存します。Calendarオブジェクトは、入力Timestamp値のタイムゾーン部分のみを保存します。時間、分、秒などのその他の情報は、入力Timestamp値に基づいてCalendarオブジェクトで設定されません。代わりに、この情報は、Calendarオブジェクトが作成されるデフォルト ローカル時間に設定されます。
Struct{ java.sql.Timestamp; java.util.Calendar; }
Timestampオブジェクトは、JVMデフォルト タイムゾーンに基づくローカル時間の"2001-02-05 05:13:11.207000"になります。Calendarオブジェクトは"GMT-00:30"になります。
TIMESTAMP WITH TIME ZONE型がSTRUCTURED型UDT属性または配列要素型である場合、デフォルトのマッピング(java.sql.Timestamp)が適用されます。
CREATE PROCEDURE F1 (IN A TIMESTAMP WITH TIME ZONE, OUT B TIMESTAMP WITH TIME ZONE) LANGUAGE JAVA ...;
public static void f1(java.sql.Struct a, java.sql.Struct[] b) { ... }
UDT (Distinct)
DISTINCT型UDT SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
intまたはshortなどのJavaプリミティブ データ型 | ベース データ型に対応するJavaクラス。例えば、次のようになります。
|
DISTINCT型UDTが事前定義型に対応するJava型(単純またはオブジェクト マッピング)にマッピングされます。DISTINCT型UDTは、Javaルーチンに渡される前に事前定義型に変換されます。
DISTINCT型UDTのデフォルトマッピングは、プリミティブJavaデータ型への単純なマッピングです。つまり、Javaパラメータ宣言がCREATE FUNCTION文またはCREATE PROCEDURE文のEXTERNAL NAME句で指定されていない場合、DISTINCT型UDTがプリミティブJavaデータ型にマッピングされます。その他の場合、マッピングは宣言のパラメータ型に基づいて行なわれます。
DISTINCT型UDTは、STRUCTURED型UDT属性または配列要素型である場合、対応するJavaデータ型にマッピングされるオブジェクトになります。
この例では、EXTERNAL NAME句のJavaルーチン宣言にパラメータ リストは含まれません。そのため、単純なマッピング(デフォルト)がMyInt UDTに使用されます。
CREATE TYPE MYINT AS INTEGER FINAL;
REPLACE FUNCTION MyScore(A1 MYINT) RETURNS MYINT LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'UDF_JAR:UserDefinedFunctions.myScore';
public static int myScore(int a) throws SQLException
UDT (Structured)
STRUCTURED型UDT SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.sql.Struct |
STRUCTURED型UDTはjava.sql.Structにマップされます。com.teradata.fnc.Structクラスはjava.sql.Structインターフェースを実装します。
LOBを持つSTRUCTURED型UDTはネストされたレベルではサポートされません。LOBはネストの最初のレベルでのみ許可されます。
XMLまたはST_Geometry属性を持つSTRUCTURED型UDTはサポートされません。
VARBYTE
VARBYTE SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | byte[] ([B) |
CREATE PROCEDURE F1 (IN A VARBYTE(30), OUT B VARBYTE(30)) LANGUAGE JAVA ...;
public static void f1(byte[] a, byte[][] b) { ... }
VARCHAR / CHARACTER VARYING / CHAR VARYING / LONG VARCHAR
VARCHAR SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし | java.lang.String |
CREATE PROCEDURE F1 (IN A VARCHAR(30), OUT B VARCHAR(30)) LANGUAGE JAVA ...;
public static void f1(String a, String[] b) { ... }
XML
XML SQLデータ型は、次のJavaデータ型にマップします。
単純マッピング | オブジェクト マッピング |
---|---|
なし |
|
java.sql.SQLXMLにマップされると、XML型はJava環境によってCLOBベースの型として扱われます。com.teradata.fnc.SQLXMLクラスはjava.sql.SQLXMLインターフェースを実装します。
UNICODEのXML文字列を送信するjava.lang.Stringへのマッピングが提供されます。マッピングは、XML値のサイズが64K未満である場合に使用できます。
XMLデータをUTF-8形式で送信するjava.sql.Blobおよびbyte[]へのマッピングが提供されます。
XML属性を持つSTRUCTURED型UDTをJava UDFまたは外部ストアド プロシージャに渡すことはできません。