ホーム > プログラミング, Oracle > Oracleで長い文字列をVARCHAR2で利用する場合の注意点

Oracleで長い文字列をVARCHAR2で利用する場合の注意点


ODP.NETで大きなサイズの文字列を扱った際にハマったのでメモです。

VARCHAR2で利用できる最大桁

テーブルに定義する場合は4000byteまで利用できる(Oracle 12c以降は32767まで)。

PL/SQLで利用する場合は 32767まで(4000バイト以上は内部CLOBに自動変換される)

文字列関数

SUBSTRなどの文字列関数はNSL_LANGによって扱える長さが異なる。

例えば、NLS_LANGがJA16SJISなどマルチバイト文字を2バイトで表す場合、SUBSTRで扱える文字列は32767/2=16384までとなる。32767バイトを超えるサイズの文字列を扱う場合は、DBMS_LOBパッケージのSUBSTRなどを利用する。通常のSUBSTRとDBMS_LOB.SUBSTRは微妙にインターフェイスが異なるので注意!!

ODP.NETとの相互運用

ODP.NETのIn/OutパラメーターにVARCHAR2を利用する場合も、NLS_LANGの定義によって利用できる文字列のサイズが決まる。NLS_LANGがJA16SJS*の場合は16384まで利用できる。これ以上の文字サイズを利用する場合は、OracleDbType.Clobを利用する。

広告
カテゴリー:プログラミング, Oracle タグ:
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。