2009年9月11日金曜日

Oracle9 でのバインド変数制限

[Oracle] JDBCでバインドできる文字列のサイズの制限や、JDBCでバインドできる文字列のサイズの制限→複数のバインド変数を使って解決にあるように、9iでは長い日本語文字列の扱いには注意が必要であった。
最初に記事を見たときは、4000バイトも指定してあるのに、日本文字は666字しか入らないなんて!!!と思ってしまいましたが、バインド変数を使用した場合だけの制限であり、実際にはCharCode毎でのバイト数一杯は入るのですね。(sjisなら日本文字で2000文字) まあ、アプリではバインド変数を使うようにするのが普通なので、回避するにはこの部分だけ特殊は処理をする必要があったのですね。

varchar2 の制限 => 4000 bytes
バインド変数の制限 => 2000 bytes
日本語の制限 => UTF-8 としてのbyte数で計算される

Oracle 10g ではバインド変数の制限は緩和されたようで、長さに応じて自動的にsetCharacterStream()に変えてくれるようです。

0 件のコメント: