■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。
Variable length column 2015/03/26 15:16 OB 3
ObjectBrowser 12.1.2.0を使用しています。

oracle11gに文字コードJA16SJISで接続しています。

下記のSQLを実行するとエラーが発生いたします。

select 'テスト'
from dual

エラー
Variable length column ['テスト'] overflow.
Value length -[6], column maximum length - [3]
こんにちは
OBサポートです。

Ver.12.1よりデータベース接続時、使用するデータベースの文字コードが
選択できるようになりました関係で発生するようになった現象の可能性がございます。
(Ver12.1より前は"UTF-8"固定でした)

原因についてですが、実行するSQL文中に列の長さが不明なものが存在する場合、
内部ロジックが文字列から必要なバイト数を計算する仕組みになっておりますが、
「UTF8」以外の文字コードを選択し、マルチバイトデータが含まれる場合に、
内部計算により確保すべきバイト数が実際に格納するデータのバイト数より
少なくなるため、当エラーが発生いたします。
※「UTF8」と「SJIS」における、マルチバイト文字のバイト数の違い
 (SJIS=2バイト Unicode=3バイト以上)

上記事象の場合、現状大変申し訳ございませんが、
データベースを接続する際に文字コードに「UTF8」を指定していただくことで、
エラーを回避することが可能ですのでご確認いただけますでしょうか。

なお、本件に関しましては、今後のバージョンアップにて改善できるよう
対応リストに追加し、対応方法を検討いたします。

ご不便、ご迷惑をお掛けし、誠に申し訳ございませんが、
何卒よろしくお願い申し上げます。
解決済みかもしれませんが、以下のSQLで回避できます。

SELECT CAST('テスト' AS VARCHAR2(20) )
FROM DUAL

VARCHAR2 の桁数は任意ですが、最小バイト数を下回らなければ
エラーとなりません。
こんにちは
OBサポートです。

弊社環境でもキャストする方法で回避できることを
確認させていただきましたので、
こちらの方法でもご検討いただければと存じます。

ご協力いただきありがとうございました。
何卒よろしくお願い申し上げます。