使用上の注意 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/rin1593638965306.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

パラメータ型のデフォルト マッピング規則

Javaメソッドのパラメータ リストで使用されるデータ型は、CREATE PROCEDUREまたはREPLACE PROCEDURE文のパラメータ リストではSQLデータ型にマッピングされます。

次のようなCREATE PROCEDURE文があるとします。

CREATE PROCEDURE NewRegionXSP
  (IN regionID INTEGER)
LANGUAGE JAVA
NO SQL
PARAMETER STYLE JAVA
EXTERNAL NAME 'JarXSP:region.newRegion';

このパラメータ リストでは、regionIDのSQLデータ型はINTEGERと指定されています。外部ストアド プロシージャを実装するnewRegionメソッドのシグネチャは次のようになります。

public static void newRegion( int regionID ) { ... }

デフォルトのマッピング規則は単純なマッピングで、SQLデータ型がJavaプリミティブにマッピングされます。SQLデータ型に適切にマッピングできるJavaプリミティブが無い場合は、デフォルトのマッピング規則はオブジェクト マッピングになり、SQLデータ型がJavaクラスにマッピングされます。

CHARACTER(30)の値を取るNewRegionXSP外部ストアド プロシージャを見てみましょう。

CREATE PROCEDURE NewRegionXSP
  (IN regionID CHAR(30))
LANGUAGE JAVA
NO SQL
PARAMETER STYLE JAVA
EXTERNAL NAME 'JarXSP:region.newRegion';

CHARACTER型は的確にJavaプリミティブにマッピングできないため、CHARACTER型はjava.lang.Stringにマッピングされます。外部ストアド プロシージャを実装するnewRegionメソッドのシグネチャは次のようになります。

public static void newRegion( String regionID ) { ... }

SQLデータ型がJavaデータ型にマッピングされる仕組みについては、SQLデータ型のマッピングを参照してください。

パラメータのデフォルト マッピングの上書き

パラメータがNULLを渡したり戻すことができる外部ストアド プロシージャでは、NULLを表現できないため、Javaプリミティブに単純にマッピングすることはお勧めできません。

デフォルトのマッピングを上書きするには、CREATE PROCEDURE文またはREPLACE PROCEDURE文のEXTERNAL NAME句で、Javaメソッドのパラメータ リスト内のマッピングを明示的に指定しなければなりません。

CLOBおよびBLOB型のマッピング

CREATE PROCEDURE文またはREPLACE PROCEDURE文のパラメータ リストのCLOBおよびBLOB SQL型は、java.sql.Clobクラスとjava.sql.Blobクラスにそれぞれマッピングされます。

CREATE PROCEDURE文またはREPLACE PROCEDURE文のデータ アクセス句は、使用されるjava.sql.Clobとjava.sql.Blobの実装クラスを決定します。データ アクセス句は、外部ストアド プロシージャがSQL文を実行できるかどうかを示します。実行できる場合は、この文がデータベースでSQLデータを読み込んだり変更するかどうかを示します。

SQL型 データ アクセス句 Javaの実装クラス
BLOB NO SQL com.teradata.fnc.Blob

詳細は、<com.teradata.fnc.Blob>を参照してください。

CONTAINS SQL com.teradata.jdbc.jdbc_4.Blob

詳細は、<Teradata JDBC Driverの参考文献(https://teradata-docs.s3.amazonaws.com/doc/connectivity/jdbc/reference/current/frameset.htmlから入手可能)>を参照してください。

READS SQL DATA
MODIFIES SQL DATA
CLOB NO SQL com.teradata.fnc.Clob

詳細は、<com.teradata.fnc.Clob>を参照してください。

CONTAINS SQL com.teradata.jdbc.jdbc_4.Clob

詳細は、<Teradata JDBC Driverの参考文献(https://teradata-docs.s3.amazonaws.com/doc/connectivity/jdbc/reference/current/frameset.htmlから入手可能)>を参照してください。

READS SQL DATA
MODIFIES SQL DATA

これらのデータ アクセス句の詳細について、Java外部ストアド プロシージャでのSQLの実行を参照してください。