- ベストアンサー
AccessからOrcleのODBCリンクテーブルへの挿入
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.発生しているエラーは、私の考えとは別の問題なのでしょうか。 ご回答よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
LeftB 関数などは、正しい値を返しません。 http://okweb.jp/kotaeru.php3?q=1450574 こちらに回答しています。
その他の回答 (1)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
>1.varchar2(4000)となっていても、4000Byteのデータを挿入することはできないのでしょうか。 varchar2(4000)のカラムに、4000バイトのデータを格納することは 当然可能です。 >2.発生しているエラーは、私の考えとは別の問題なのでしょうか。 クライアントの4000バイトが、DBサーバのキャラクタセットで4000バイトとは限りません。 例えば、sjisなクライアントの半角カナは、1文字=1バイトですが、eucなDB上では、 1文字=2バイトで格納されます。 なので、クライアント上の4000バイトが、DBサーバ上で、varchar2(4000)に格納できるか どうかは、設定次第です。 まずは、DBのキャラクタセットを確認してみて下さい。
お礼
2つの質問に対してのご回答ありがとうございました。 ご教示いただいたページ大変勉強になりました。