- OracleのLong型を使用している場合に、そのフィールに格納されるデータが当初32760バイトを超えない想定であったものが、32760バイトを超えるようになると色々考慮するところが出てくる
- 保守をしていて、テーブル定義のLong型をCLOBなどに変換できない状況で、Long型を使用せざるを得ないとき用のメモ
- OracleのLong型は2Gバイトまでのデータを格納できる
- PL/SQL のLong型は32760バイトまでしか格納できない
- PL/SQLで32760バイトを超えるデータをOracleから取り出してLong型に格納できない。変数定義に%TYPEを使ってデータ型を他文字列型のように扱ってるといつかどこかでやられる
- JavaからLong型に値を格納する場合にPreparedStatment#setStringを用いると32766文字までしかセットできない(バイトではないのでOracle側の文字コードがShift_JISやEUC-JPであれば、32kバイト以上格納できる)
- それ以上の場合はPreparedStatment#setCharacterStreamを使用する。というかLong型に値をセットする場合はこっちを使う
- Common SQL Environment を用いてLong型を参照した場合、格納されている文字列が32kバイト以下なら参照できる。32kバイトを超えると何も表示されなくなる
- Accessのテーブルリンクを用いてLong型を参照した場合、32kバイトを超えても参照できる。おそらくメモ型の上限までは参照できる。ただしフォームやレポートのコントロールには文字数制限がある。制限文字数はAccessのバージョンによって異なる。
- メモ型はAccessのSQL関数にも渡せるのでLong型のLengthも取れる
2011年9月4日日曜日
[メモ] [Oracle] Long型に32760バイトを超える文字列
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿