• 締切済み

データーベースリンク

以前にも、データベースリンクについての質問をさせていただきました。さらに問題が発生し、困っております。 【環境】 RedHatLinux Oracle9i Windows2000 Oracle8.0.6 という二つのDBがいます。 Oracle9iからCREATE DATABASE LINKをつかって、 Oracle8を参照します。 【データベースリンク作成】 CREATE DATABASE LINK XXXX_DBLINK CONNECT TO aaaaa IDENTIFIED BY bbbbb USING 'XXXX' でDBLINKを作成し、 select * from test@XXXX_DBLINKとして、 結果を受けることはできました。 そこで、以下のSQLを実行したときに、SQLエラーが発生してしまいました。 【問題のSQL】 select * from test@XXXX_DBLINK where COLUMN1=:hensu1 and COLUMN2=:hensu2 【実行結果】 SQL実行中に以下のエラーが発生しました。 ORA-01026: バインド・リストにサイズが4000を超える複数バッファが存在しています。 ORA-02063: 先行のエラー・メッセージを参照してくださいline(TRINITY_DBLINK) と2つのメッセージからなっています。 【※】 ・変数パラメータとしては、1つの場合、SQLエラーは発生しません。 ・変数パラメータが2つ以上の場合発生します。 ・変数の部分を固定で、条件を指定すれば、正常にSQLが実行されます。 質問は、この問題を解消するためにどのような対処方法がありますでしょうか? CREATE DATABASE LINK時にオプションを設定することや、 Oracle8もしくは、Oracle9iを構築する際に設定する数値など ありましたら、お教えください。

みんなの回答

回答No.2

>実は、CSEというSQLPLUSに近いツールで実行しております。 CSEでのバインド変数の定義で、大きなサイズを用意して要るんだと思いますが、 データベースリンクの制限を考えると、SQLの実行の仕方を変えるくらいしか 方法が無いように思います。 >文字コードをあわせなければならないでしょうか? 文字コードは、Netサービスが解決するお約束事項なので、 特に気にする必要はありません。

回答No.1

>ORA-01026: バインド・リストにサイズが4000を超える複数バッファが存在しています。 どのように、":hensu1"と":hensuu2"を定義されているか判らないのですが・・・ バインド変数の定義を見直せば、解決すると思いますよ。 (必要な桁数を意識してバインド変数を定義すべし)

takokko
質問者

補足

実は、CSEというSQLPLUSに近いツールで実行しております。 変数の宣言や、初期化などは一切していません。 このSQLを実行すると、変数に対して、入力を促すポップアップが 出るツールです。 COLUMN1、COLUMN2ともに、4000バイトを超えるような値をセットしてはいません。 データベースリンクで 互い(Linux上Oracle9、Windows上Oracle8)の文字コードをあわせなければならないでしょうか?

関連するQ&A