パラメータ型のデフォルト マッピング規則
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の実行を参照してください。