2011-07-21 13 views
2

.NETでは、2つの別々のOracleデータベースからネストされたクエリを実行できますか?複数のOracleデータベースからのネストされたクエリ

など。

もしそうなら、どのように私はこれをやって行くだろう "my_value IN(table_in_database_2 FROM my_value を選択)table_in_database_1 FROM my_value、 を選択"?

最終的に、これは、クエリを複数の「OR値IN」リストに分割することなく、条件付きリスト内の1000を超える項目を含む「in」ステートメントを使用することによる「ORA-01795」エラーを克服するための努力です。

答えて

1

データベースリンクを構築してそのリンクに参加するだけで、パフォーマンス上の問題が発生する可能性があります。このような何か:のパフォーマンスに応じ

SELECT my_value 
    FROM table_in_database_1 t1 JOIN [email protected] t2 
     ON t1.my_value = t2.my_value 

ビルドデータベースのデータベース2へのリンクが1

CREATE DATABASE LINK db2 CONNECT TO user IDENTIFIED BY pw USING tns-alias; 

データベース2の表をデータベース1にあなたのテーブルに参加しますこのリンクには、データベースリンクとテンポラリテーブルの両方を含むハイブリッドアプローチを使用することができます。

上記のようにデータベースリンクを構築します。

INSERT INTO db2_values 
SELECT my_value 
    FROM [email protected]; 

最後に、データベース1のテーブルを結合する:値はDB2からDB1にデータベースからサブクエリで2

CREATE GLOBAL TEMPORARY TABLE db2_values (value VARCHAR2(20)); 

コピー値を使用することを保持するデータベース1に一時テーブルを構築します一時テーブルに追加します。

SELECT my_value 
    FROM table_in_database_1 t1 JOIN db2_values t2 ON t1.my_value = t2.value; 
0

はい - このためにデータベースリンクを調べることができます。

1

データベースリンクを作成できない場合は、SELECT my_value FROM table_in_database_2以降のすべての値をdatabase_1の一時表に挿入してから結合してもかまいません。

+0

データベース2のデータをリンクなしでデータベース1にどのように取得しますか? – DCookie

+0

@Dcookie - もしあなたがフロントエンドでそれをやることができたら、それをすることができます。データベース2に対してクエリを実行します。そのデータをデータベース1のテーブルに挿入します。データベース1に対してクエリを実行してください。 –

+0

Dave Costaが正しいです。最後の文を読んでください。彼は両方のデータベースに対してクエリーを実行します。彼は2つの接続を持っています:) –

関連する問題