18.3.12 スタンダードインタフェース版からネイティブインタフェース版への移行
スタンダードインタフェース版からネイティブインタフェース版へSQLJソースを移行する場合,修正が必要になる部分があります。ネイティブインタフェース版に移行した場合の修正要否を次の表に示します。
コマンド名 |
スタンダードインタフェース版 |
ネイティブインタフェース版 |
修正の要否 |
---|---|---|---|
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();