Oracle

最終更新日: 2023年4月7日

仕様および制約

テーブル名とカラム名

バージョン Oracle12cR1まで Oracle12cR2以降
テーブル名(Wagbyのモデル名) 30文字 128文字
カラム名(Wagbyのモデル項目名) 30文字 128文字

一般

  • 「時間型」主キーのモデルを定義することはできません。
  • 「時間型」項目を検索条件とすることはできません。
  • Oracle が提供する XML 型はサポートしていません。
  • Oracle が提供する TIMESTAMP WITH LOCAL TIME ZONE 型はサポートしていません。
  • Oracle では作成されるテーブル名のバイト数に制限があるため、モデル名(英語)や項目名(英語)を決定する際に、文字数を意識する必要があります。
  • データベースの文字エンコーディングに UTF-8 を使用する場合、10.1.0 以降の版をお使いください。Windows Vista で採用されたサロゲート・ペア文字を登録することができます。
  • 主キーに「順序」を利用する場合、Oracle が提供する順序機能を利用します。これは標準で欠番が発生する仕様となっています。Wagby ではこれを抑制するために、create sequence 命令を発行するときに nocache 指定を付与しています。

型のマッピング

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)
varchar2 型で指定する数は「バイト」または「文字」単位です。「255」と指定した場合はバイト単位となり、「255 char」と指定した場合は文字単位となります。詳細は Oracle のマニュアルでご確認ください。
varchar2(4000) と指定した場合はバイト単位となります。文字エンコーディングに UTF-8 を用いた場合、1文字3バイトと仮定して、最短で 1,333 文字となります。(すべてがサロゲートペア文字だと 1,000 文字となります。)

注意点

JDBCドライバのバージョンの一致

Oracle を利用した開発では、JDBC ドライバのバージョンと、Oracle 本体のバージョンが厳密に一致していないとトラブルが発生します。

両者のバージョンを同じにするよう、開発時はご注意ください。(わずかなマイナーバージョン番号の変更であっても、正常動作しなくなることがあります。)

文字セットにSJISを利用する場合

グローバリゼーション・サポートとして orai18n.jar が必要です。この jar ファイルの詳細は Oracle 社のサイトなどでご確認ください。

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

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

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

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

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

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