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();