プロが教えるわが家の防犯対策術!

OS:XPpro
Access:97,2000
Oracle:7

AccessからOracleのODBCリンクテーブルに対して追加クエリを実行すると、
ODBC--リンクテーブル'テーブル名'への挿入に失敗しました。
[Oracle][ODBC Oracle Driver][Oracle OCI]ORA-01461:
can bind a LONG value only for insert into a LONG column.(#1461)
というエラーが発生します。

メモ型のフィールド'A'をvarchar2(4000)のフィールド'B'に追加する部分で、LeftB(A,4000)としている部分がうまく行かないようようなので、LeftB(A,3000)と丸めてあげると通ります。

質問を纏めますと、
1.varchar2(4000)となっていても、4000Byteのデータを挿入することはできないのでしょうか。
2.発生しているエラーは、私の考えとは別の問題なのでしょうか。

ご回答よろしくお願いします。

A 回答 (2件)

LeftB 関数などは、正しい値を返しません。



http://okweb.jp/kotaeru.php3?q=1450574
こちらに回答しています。
    • good
    • 0
この回答へのお礼

2つの質問に対してのご回答ありがとうございました。
ご教示いただいたページ大変勉強になりました。

お礼日時:2005/06/20 08:54

>1.varchar2(4000)となっていても、4000Byteのデータを挿入することはできないのでしょうか。



varchar2(4000)のカラムに、4000バイトのデータを格納することは
当然可能です。

>2.発生しているエラーは、私の考えとは別の問題なのでしょうか。

クライアントの4000バイトが、DBサーバのキャラクタセットで4000バイトとは限りません。
例えば、sjisなクライアントの半角カナは、1文字=1バイトですが、eucなDB上では、
1文字=2バイトで格納されます。
なので、クライアント上の4000バイトが、DBサーバ上で、varchar2(4000)に格納できるか
どうかは、設定次第です。

まずは、DBのキャラクタセットを確認してみて下さい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す