A5:SQL Mk-2

開発のこと、日々のこと

varchar2型に格納できる文字数について

ホーム フォーラム A5:SQL Mk-2掲示板 varchar2型に格納できる文字数について

  • このトピックには6件の返信、2人の参加者があり、最後ににより5年、 4ヶ月前に更新されました。
7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #3363 返信
    荒木
    ゲスト

    お世話になります。

    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

    #3384 返信
    松原正和
    キーマスター

    荒木さんこんにちは。

    SJISのOracleデータベースを早急には用意できなかったのですが、エラーとしては、

    「ORA-12899: 列”TABLE_SCHEMA”.”TABLE_NAME”.”COLUMN_NAME”の値が大きすぎます(実際: NN、最大: MM)」
     
    のような感じでしょうか?。
     
    半角500文字というのは1文字2バイトにも見えますが、全角 334文字というのはちょっと不思議ですね。1文字3文字にしても、1文字余計に入る気がしますし、半角の1文字2バイトとも整合性が取れません。

    あと、長さセマンティクスはバイト・セマンティクス(varchar2(1000 byte))ということでよろしいでしょうか?。
     
    ちょっと不思議ですね。

    #3389 返信
    荒木
    ゲスト

    エラーは「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」と出ます。

    よろしくお願いします。

    #3408 返信
    松原正和
    キーマスター

    荒木さんこんにちは。
     
    直接接続機能ですが、使用しているUniDACというライブラリですが、ソースコードは付属するものの、難読化されていてちょっと直せないかもしれないです。
     
    とりあえず、InstantClientでも良いのでOracle Clientを導入して回避されるとよいかと思います。

    #3418 返信
    荒木
    ゲスト

    instant client x64 12.2.0.1.0を導入したところ、解消されました。ありがとうございました。
    ただ、データベースの接続方法を修正しようとしたところ、「64bit Oracle Clientがインストールされていません。直接接続でのみ接続できます。」の注意が表示されていました。
    登録・接続はできるので問題ないですが、instant clientは検出できないのでしょうか。
    Windowsの環境変数やA5のオプションのORACLE_HOMEはきちんと設定したつもりですが・・・。

    #3429 返信
    松原正和
    キーマスター

    荒木さんこんにちは。
     
    ちょっとおかしいですね。パス中を検索してoci.dllを探し、x86, x64のDLLを見分けてメッセージを出すようにしているのですが、どこかおかしいのかもしれません。
     
    とりあえず、これは単に警告メッセージなので無視するようにしてください。

    #3437 返信
    荒木
    ゲスト

    それでしたらこちらのせいです。
    以下のフォルダ構成で構築しています。
    ——————————-
    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をコピーしたところ警告が消えましたので不具合ではありません。
    お騒がせして申し訳ありませんでした。

7件の投稿を表示中 - 1 - 7件目 (全7件中)
返信先: varchar2型に格納できる文字数についてで#3437に返信
あなたの情報:




コメントは受け付けていません。