ホーム › フォーラム › A5:SQL Mk-2掲示板 › varchar2型に格納できる文字数について
- このトピックには6件の返信、2人の参加者があり、最後ににより6年、 11ヶ月前に更新されました。 
- 
		投稿者投稿
- 
		
			
				
荒木 ゲストお世話になります。 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をコピーしたところ警告が消えましたので不具合ではありません。
 お騒がせして申し訳ありませんでした。
- 
		投稿者投稿
