ホーム › フォーラム › A5:SQL Mk-2掲示板 › varchar2型に格納できる文字数について
- このトピックには6件の返信、2人の参加者があり、最後ににより6年前に更新されました。
-
投稿者投稿
-
荒木ゲスト
お世話になります。
varchar2(1000)で設定したフィールドに文字を入れようとすると
・半角500文字
・全角334文字
・全角333文字&半角3文字
のいずれかまでしか入りませんでした。
以下の環境では全角500文字または半角1000文字入るのが正しいかと思いますが、一度ご確認いただけないでしょうか。環境
データベース Oracle Database 12c Standard Edition Release 12.1.0.2.0 – 64bit Production
データベースキャラクタセット JA16SJISTILDE
各国語キャラクタセット AL16UTF16
A5:SQL Mk-2 version 2.13.3 64bit松原正和キーマスター荒木さんこんにちは。
SJISのOracleデータベースを早急には用意できなかったのですが、エラーとしては、
「ORA-12899: 列”TABLE_SCHEMA”.”TABLE_NAME”.”COLUMN_NAME”の値が大きすぎます(実際: NN、最大: MM)」
のような感じでしょうか?。
半角500文字というのは1文字2バイトにも見えますが、全角 334文字というのはちょっと不思議ですね。1文字3文字にしても、1文字余計に入る気がしますし、半角の1文字2バイトとも整合性が取れません。あと、長さセマンティクスはバイト・セマンティクス(varchar2(1000 byte))ということでよろしいでしょうか?。
ちょっと不思議ですね。荒木ゲストエラーは「ORA-01461:LONG値はLONG列にのみバインドできます。」でした。
長さセマンティクスはバイト・セマンティクスです。
最初に書いておくべきでした。申し訳ありません。
環境のことで追記しますが、Oracleクライアントを使わず直接接続しています。ちなみに、Microsoft Access2010で接続したところ、1000バイト(半角1000文字、全角500文字、全角1文字&半角998文字等)入力でき、超えた場合は
「ORA-12899: 列”TABLE_SCHEMA”.”TABLE_NAME”.”COLUMN_NAME”の値が大きすぎます(実際: NN、最大: MM)」
のエラーが出ました。半角1文字追加で「実際: 1001、最大: 1000」、全角1文字追加で「実際: 1002、最大: 1000」と出ます。よろしくお願いします。
松原正和キーマスター荒木さんこんにちは。
直接接続機能ですが、使用しているUniDACというライブラリですが、ソースコードは付属するものの、難読化されていてちょっと直せないかもしれないです。
とりあえず、InstantClientでも良いのでOracle Clientを導入して回避されるとよいかと思います。荒木ゲストinstant client x64 12.2.0.1.0を導入したところ、解消されました。ありがとうございました。
ただ、データベースの接続方法を修正しようとしたところ、「64bit Oracle Clientがインストールされていません。直接接続でのみ接続できます。」の注意が表示されていました。
登録・接続はできるので問題ないですが、instant clientは検出できないのでしょうか。
Windowsの環境変数やA5のオプションのORACLE_HOMEはきちんと設定したつもりですが・・・。松原正和キーマスター荒木さんこんにちは。
ちょっとおかしいですね。パス中を検索してoci.dllを探し、x86, x64のDLLを見分けてメッセージを出すようにしているのですが、どこかおかしいのかもしれません。
とりあえず、これは単に警告メッセージなので無視するようにしてください。荒木ゲストそれでしたらこちらのせいです。
以下のフォルダ構成で構築しています。
——————————-
D:\InstantClient12.2.0.1.0(ORACLE_HOME、環境変数Path・TNS_ADMINに指定)
├─bin
│ └─oci.dllを含むInstantClientファイル
└─network
└─admin
└─tnsnames.ora
——————————-
試しにD:\InstantClient12.2.0.1.0直下にoci.dllをコピーしたところ警告が消えましたので不具合ではありません。
お騒がせして申し訳ありませんでした。 -
投稿者投稿