• ベストアンサー

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.発生しているエラーは、私の考えとは別の問題なのでしょうか。 ご回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.2

LeftB 関数などは、正しい値を返しません。 http://okweb.jp/kotaeru.php3?q=1450574 こちらに回答しています。

mojaco
質問者

お礼

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

その他の回答 (1)

回答No.1

>1.varchar2(4000)となっていても、4000Byteのデータを挿入することはできないのでしょうか。 varchar2(4000)のカラムに、4000バイトのデータを格納することは 当然可能です。 >2.発生しているエラーは、私の考えとは別の問題なのでしょうか。 クライアントの4000バイトが、DBサーバのキャラクタセットで4000バイトとは限りません。 例えば、sjisなクライアントの半角カナは、1文字=1バイトですが、eucなDB上では、 1文字=2バイトで格納されます。 なので、クライアント上の4000バイトが、DBサーバ上で、varchar2(4000)に格納できるか どうかは、設定次第です。 まずは、DBのキャラクタセットを確認してみて下さい。

関連するQ&A

  • ACCESSからODBC接続でORA-12504

    Access上でオラクルのテーブルのリンクを設定しようと していますが、「ORA-12504」のエラーが表示されてしまい 接続できず、困っています。 【エラー詳細】 ODBC-呼び出しが失敗しました。 [Oracle][ODBC][Ora]ORA-12154 TNS~ (#12154)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(♯0)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(#0) なお、SQLPlusで接続ができていますし、ODBCアドミニストレータ の接続テストも成功します。 Accessで問題があるのでしょうか? 【環境】 OS:WinXP x64 Access:003 Oracle:サーバ 10g(10.2.0.1) for 64-bit    :クライアント 10g(10.1.0.2) for 32-bit     ※64-bitのオラクルクライアントはAccessが      ドライバを認識しないため使用できませんでした。 何かわかりましたらご教授ください。 よろしくお願いします。

  • ODBCエラーについて

    はじめまして、今とても困っています。 力を貸してください。 AcsessからテーブルのリンクでODBCデータベースからマシンデータソースで セットアップし、データソースドライバにOracle ODBC Driverを選択し 実行したのですが、ODBCエラー Ora-00911(文字列が無効) になってしまいます。 ちなみに、Microsoft ODBC Driver for Oracleでは正常 でした。 なにか情報がありましたらお願いします。 SQORA32.DLL=8.1.7 2000/05/11 7:00 Acsess=Acsess97 Oracle=Oracle8i (8.1.7)、

  • Oracle10gをACCESSでリンクした場合の不具合

    ORACLEのデータベースをACCESSを使用してODBCで リンクを張り、テーブルの管理をしています。 環境は OLACLE 10g 10.1.0.2.0 ACCESS 2007 WinXP SP2 ODBC:Oracle in OraClient10g 10.01.00.02 OLACLEのテーブルにNVARCHAR2,CLOB型のフィールドを作成し ACCESSでリンク後に、そのフィールドにデータを入力すると 「ORA-01461:LONG値はLONG列にのみバインドできます。」 というエラーがでます。 テーブル定義は CREATE TABLE test( id NUMBER(5) PRIMARY KEY, data1 NVARCHAR2(1000), data2 CLOB ) といった感じです(実際はもっと多いですが・・・) このテーブルでdata1のフィールドに 「あああ」と入力するとエラーがでるのですが、 「aあ」と入力するとエラーはでずに、保存可能です。 「aああ」だと同じくエラー、 「aaああ」だとOK (「a」は半角) 調べたところMicrosoftのODBCはNVARCHAR2型やCLOB型には 対応していない、と言うことはわかったのですが、 ORACLEのODBCでもダメなのでしょうか・・・? UNICODEを使用するので、どうしてもNVARCHAR2が必要なのですが、 対応策をお願いします

  • ACCESSからODBC経由だと"ORA-12504"

    遠隔の環境からOracleに接続させています。 OracleのSQL Plusだと、接続できるのですが、 ACCESSのODBC経由だと、「ORA-12504」のエラーが表示され、接続できず、困っています。 サービス名はあわしているつもりです。 アドバイスをお願いいたします。 ●OracleサーバーのVerはよくわかりません... 多分古い(8iぐらい)と思います。 accessは2003です。 Oracleクライアントは、Oracle8iです。 よろしくお願いいたします。

  • ODBC接続に関して

    教えて下さい。 Oracle Database 11g Express Edition をインストールし、そこにODBC経由で 接続しようと考えていますが、どうも思ったように接続ができません。 ODBCは、  1.[スタート]→[コントロールパネル]→[管理ツール]→[データ ソース (ODBC)]を選択。  2.ODBCデータソースアドミニストレータのユーザDSNタブの追加ボタンを選択。  3.データソースの新規作成から「Oracle in XE」を選択。 して設定してあります。 Oracle側にユーザとして、"ABC"というユーザ(ワークスペース管理者)を作成、そのユーザで、 Oracle ODBC Driver ConfigurationのUserIDを追加しましたが、接続できません。  Unable to connect  SQLState=28000  [Oracle][ODBC][Ora]ORA-01017 ; invalid username/password ;logon  denied というエラーが表示されます。 但し、SYSTEMというユーザでは接続できます。 ユーザ名/パスワードは間違っていませんが、何が問題でしょうか??? そもそもの考え方が間違っているでしょうか、、、 教えて下さい。 よろしくお願いします。

  • AccessからOracleDBへのリンク(ODBC経由)

    AccessからOracleDBへのリンクについて教えてください。 以前の質問でも似たような質問があったのですが、少し違うようなので 質問させていただきます。 Oracleクライアント(Net8含む)がインストールされていないPCからODBC経由でOracleDB をリンクさせて参照しようと考えています。 そこで、OracleDBを参照できるように「設定」→「コンパネ」→「ODBCデータソース」 から ”Microsoft ODBC for Oracle” バージョン 2.573.6526.00 データソースを新規に追加しようとすると下記のようなエラーメッセージが表示され怒られてしまいます(--;) **************************** エラー内容 ***************************** Oracle(tm)クライアントとネットワークコンポーネントが見つかりません。これらのコンポーネントは Oracle Corporationから提供され、Oracle Version 7.3(またはそれ以降) のクライアントソフトウェアの一部としてインストールされます。 このドライバを使用するには、これらのコンポーネントを先にインストールしてください。 ****************************************************************** このようなエラーメッセージが出るということは具体的に何が足りないのでしょうか? やはりOracleクライアントのインストールは必須なのでしょうか? 申し訳ないですが宜しくお願い致します。 Access97、Oracle8.1.6

  • [Oracle8i]ODBC経由でデータベースリンクに接続できますか?

    こんばんわ、ZIGENといいます。 はじめて、データベースリンクというものを 作成してみまして、Net8からは、無事接続し 対象のテーブルをSELECTできました。 しかし、ODBC経由で同じテーブルを参照しようと すると、以下のエラーになってしまいます。 --- SQLSTATE:S1000 Native Error Code:2041 Driver Message:[Oracle][ODBC][Ora]ORA-02041 クライアントデータベースはトランザクションを 開始しませんでした。 --- これはどういうことなのでしょうか? ODBC経由では接続できないということでしょうか? よろしくお願いします。

  • Oracle10gのテーブルをODBC経由でAccess2002にリンクテーブルをはりたいのに・・・

    Oracle10gのテーブルをODBC経由でAccess2002にリンクテーブルを作成しようとしました。 しかし、「テーブルのリンク」画面に複数あるはずのテーブルが1つしか表示されずリンクテーブルが作成できません。 Oracle9iのテーブルは正しく表示されます。 Access2000の環境下で同様の不具合が発生した人がおり、その人はOffice2000のサービスパック(1・2・3)をあてることで不具合が解消されたそうです。 同様にOfficeXPのサービスパック(1・2・3)をあてたのですが不具合は解消されませんでした。 誰かご存知の方はいらっしゃらないでしょうか。 よろしくお願いします。 動作環境  OS:Windows XP Pro  Oracle Client:10g  Access(Office):2002(XP)

  • ACCESSからのODBC接続について

    Windows2000サーバー上にあるアクセスファイル(別のOracle9サーバーにODBCリンクしている)をWindowsXpパソコンにコピーしましたが、「ODBC-xxxxへの接続が失敗しました」と表示されOracleデータを参照できません。 WindowsXpには、Oracleクライアントはインストール済み、DSNにもMicrosoft ODBC for Oracleを登録済みです。新規にODBCリンクすることは可能です。 エラーなく参照できるようにするにはどうすればいいでしょうか。

  • AccessからOracleへのODBC接続

    現在、Oracleで作成したデータベースに接続して 検索するソフトを、Accessで作成してあります。 Oracleに接続をするのに、 ODBCを使用しているのですが、 最初依頼があったときは「Oracle8」のときだったので、 「Oracle8」のみ接続可能なプログラムが組んであり、 「Oracle10g」の入っているPCでは接続できないという問題が発生しました。 そこで、「Oracle8」と「Oracle10g」とも接続出来るように プログラムを書き換えたのですが、 現在は「Oracle11g」が最新になっていると思うので、 ゆくゆくはそれに対応しなければならないなあ、と思っています。 そうすると、Oracleがバージョンアップするたびに、 ソフトのプログラムを書き換えなくてはならなくなり、 効率的ではないな…と思いまして… Oracleのバージョンが違っていても、 自分のPCのOracleのバージョンを自動認識して、 AccessからOracleへ接続する方法はあるのでしょうか? ちなみに現在は、TableDefsコレクションを使用して、 まず、Oracle8で繋ぎにいき、それでエラーが起これば Oracle10gで繋ぎにいく、という処理を行っています。 【参考コード】 dim db as object dim tdf as object set db = CurrentDb set tdf = TableDefs("テーブル名") tdf.Connect = "(※テーブルのプロパティの説明のところに入る文)" tbf.RefreshLink (※ここが8と10gで違ってくる) よろしくお願いします。