サポート > データベース活用ガイド(R6) > Oracle

ここでは、Oracle (9i/10g/11g) 利用時の注意点を示します。

仕様および制約

型のマッピング

Wagby で指定した型は、データベース内で次のように扱われます。

整数型 number(10,0)
文字列型 varchar2(255 char)
文字列型 (テキストエリア) varchar2(4000)
日付型 date
時間型 date
日付時間型 timestamp
ファイル型(ファイル名) varchar2(255 char)
1バイト整数 number(3,0)
2バイト整数 number(5,0)
4バイト整数 number(10,0)
8バイト整数 number(19,0)
4バイト浮動小数点数 float
8バイト浮動小数点数 double precision
固定値 (作成日/更新日) timestamp
その他 (URL型/メールアドレス型など) varchar2(255 char)
※1 モデル参照の場合は、参照先モデルの主キーの型に準じます。
※2 開発者の方で型を変更することもできます。詳細は Wagby 定義ファイルマニュアル「モデルの定義 > 項目の型を定義する」をお読み下さい。
※3 varchar2 型で指定する数は「バイト」または「文字」単位です。「255」と指定した場合はバイト単位となり、「255 char」と指定した場合は文字単位となります。詳細はデータベースのマニュアルでご確認ください。
※4 varchar2(4000) と指定した場合はバイト単位となります。文字エンコーディングに UTF-8 を用いた場合、1文字3バイトと仮定して、最短で 1,333 文字となります。(すべてがサロゲートペア文字だと 1,000 文字となります。)

注意点

Oracle を利用した開発では、JDBC ドライバのバージョンと、Oracle 本体のバージョンが厳密に一致していないとトラブルが発生します。 両者のバージョンを同じにするよう、開発時はご注意ください。(わずかなマイナーバージョン番号の変更であっても、正常動作しなくなることがあります。)

固定長項目の扱いについて

Oracle では、CHAR型の項目に定義したデータ長より短い値を登録すると、データベース側で自動的に入力データ後方に半角スペース詰めされて登録されます。(例. 'ABC' => 'ABC ')

すなわち、Webアプリケーションの画面から入力された主キーの値と実際にデータベースに登録された値が異なります。 このため、登録処理後の詳細画面への遷移に失敗するなどの影響があります。

この対応として、当該項目の「初期値 - 登録時」に、次のような設定を行うとよいでしょう。

  • 種類 : 四則演算
  • 値 : LEFT(CONCAT(${TARGET_ITEM_NAME}, "    "), 4)

あわせて当該項目(TARGET_ITEM_NAME)の「入力フィルタ」を「文字列(一般)」から「文字列(最小限)」に変更する必要があります。

Oracle利用時の順序の扱いについて

Wagby で「人工キー」を指定した場合、Oracle が提供する「順序」を使います。 ここで、Oracle の順序機能は標準で欠番が発生する仕様となっています。これを抑制するには次の SQL を発行する必要があります。

alter sequence <順序名> nocache;

※ Wagby R6.5 Update 15 より、上記 "nocache" 指定を自動的に付与するようにしました。