Hitachi

ノンストップデータベース HiRDB Version 10 UAP開発ガイド


18.3.12 スタンダードインタフェース版からネイティブインタフェース版への移行

スタンダードインタフェース版からネイティブインタフェース版へSQLJソースを移行する場合,修正が必要になる部分があります。ネイティブインタフェース版に移行した場合の修正要否を次の表に示します。

表18‒9 スタンダードインタフェース版からネイティブインタフェース版へ移行した場合の修正要否

コマンド名

スタンダードインタフェース版

ネイティブインタフェース版

修正の要否

UAP(入力)ソース

ファイル名.sqlj

同じです。

−

UAP(出力)ソース

JAVAソースファイル名.

javaプロファイル名.ser

JAVAソースファイル.java

−

オプション

出力ファイル名指定など

同じです。

−

SQL先頭子

#sql

同じです。

−

SQL終了子

;

同じです。

−

SQL宣言節

不要です。

同じです。

−

埋込み変数

:変数名

同じです。

−

宣言文

#sql context クラス名

#sql iterator クラス名

同じです。※1

−※2

接続コンテキストの作成

パラメタにJDBC接続オブジェクトを指定できます。

同じです。

−

パラメタにJDBC接続オブジェクト以外を指定できます。

同じパラメタを取得するものはありません。

○※3

デフォルト接続コンテキストの使用

JP.co.Hitachi.soft.HiRDB.sqj.runtime.

PrdbContext

JP.co.Hitachi.soft.HiRDB.pdjpp.runtime.

PrdbContext

○※4

実行コンテキストの明示指定

sqlj.runtime.ExecutionContext

JP.co.Hitachi.soft.HiRDB.pdjpp.runtime.

ExecutionContext

○※5

CAST文の使用(JDBC結果セットの受け取り)

実行できます。

実行できません。

○※6

動的結果セットの受け取り

実行できます。

実行できません。

○※7

データ型

byte[]

java.math.BigDecimal

java.lang.String

JP.co.Hitachi.soft.HiRDB.pdjpp.runtime.

HiRDBBLOB

JP.co.Hitachi.soft.HiRDB.pdjpp.runtime.

HiRDBDECIMAL

JP.co.Hitachi.soft.HiRDB.pdjpp.runtime.

HiRDBCHARなど

○※8

同一反復子オブジェクト名を使用した異なるSELECT文の実行

実行できます。

実行できません。

○※9

(凡例)

○:修正する必要があります。

−:修正する必要はありません。

注※1

名前反復子は使用できません。また,位置反復子を使用した場合は,インナークラスには使用できません。

注※2

名前反復子を使用する場合,及びインナークラスを使用する場合は,修正が必要となります。

注※3

接続処理を変更してください。詳細については,「ネイティブインタフェース版を使用した場合のHiRDBサーバへの接続」を参照してください。

注※4

パッケージ名のJP.co.Hitachi.soft.HiRDB.sqj.runtime.PrdbContextをJP.co.Hitachi.soft.HiRDB.pdjpp.runtime.PrdbContextに変更してください。

注※5

sqlj.runtime.ExecutionContextをJP.co.Hitachi.soft.HiRDB.pdjpp.runtime.ExecutionContextに変更してください。

注※6

CAST文はトランスレート時にエラーとなります。そのため,CAST文は削除してください。また,JDBCの結果セットは,SQLJの反復子を使用しないで直接操作するようにUAPを変更してください。

注※7

動的結果セットを受け取るためのメソッドがないため,javaコンパイル時にエラーとなります。そのため,ExecutionContext.getNextResultSet()を発行している部分を削除してください。なお,動的結果セットを取得したい場合は,JDBCを直接使用するようにUAPを変更してください。

注※8

byte[]は,BINARY型としてHiRDBサーバに要求します。HIRDBサーバのバージョンが06-02以前の場合に変更が必要です。

BigDecimal型を受け取り変数に指定している場合は,精度15,位取り0が設定されるため,それ以外の精度,位取りのときは変更が必要です。

Stringを入力変数に使用した場合,VARCHAR型としてHiRDBサーバに要求します。データ型をHiRDBサーバのデータ型に対応させたい場合は,変更が必要です。

注※9

同一の反復子オブジェクト名を使用して,異なるSELECT文を実行することはできません。この場合,SELECT文ごとに,反復子オブジェクト名を分ける必要があります。例を次に示します。

#sql iterator pos(HiRDBCHAR(10));
   :
pos positer = null
pos positer2 = null;
HiRDBCHAR out = null;
   :
#sql positer = {SELECT * FROM T1};
#sql {FETCH :positer INTO :out}
positer.close();
 
#sql positer2 = {SELECT * FROM T2};
#sql {FETCH :positer2 INTO :out}
positer2.close();