読者です 読者をやめる 読者になる 読者になる

Oracle NVARCHAR2(1600)で1600文字入らない件

NVARCHAR2のカラムを大きくして大量文字を入力しようとすると以下のエラーが発生して入力できない。

エラー:: ORA-01461 : LONG値はLONG列にのみバインドできます。

ググってみたところ、

http://www.projectgroup.info/tips/Oracle/errorcode/ORA01461.html

のサイトが出てきた。

Oracle 11G R2 Client (11.2.0.1) のODBCドライバーの不具合

とのことでバージョンを確認したところ、こちらの環境はOracle Clientは11.2.0.4でした。残念。で、エラーメッセージが崩壊しているのは置いておいて、どこまで入るのだろうと根気強く入力値を変化した結果、1333文字までしか入らないことがわかった。

NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE

と指定しているのでShift_JIS(2byte)なんだけど、1333×3=3999つまり4000byte境界があるっぽい(内部で3byteで計算してるのか?)。
なんだかとても納得行かない仕様。

ちなみに確認したOracleサーバ側のバージョンは11.2。