0

テーブルからバインド変数に DB リンクの名前 (多くの DB リンクがあります) を選択し、すべての DB リンクで使用できるテーブルからデータをフェッチする必要がありますが、使用する DB リンクによってデータが異なります。バインド変数の値を DB リンクとして使用するための解決策が得られません。

これは私のコードです:

selectDB リンクをバインド変数にフェッチするためのステートメント

SELECT DB_LINK into :v_db_link from reagions_db_links;

次に、テーブルからデータを取得するために使用する必要があります

SELECT reagion_id, region_name from Table_details@:v_db_link

以下のように連結しようとしましたが、機能しません

SELECT reagion_id, region_name from Table_details@||:v_db_link

ユーザーが選択した地域に応じて多くのDBリンクを作成できるため、解決策を提案してください。バインド変数に入れ、テーブルからデータを取得するために使用したいと考えています。

4

1 に答える 1

1

そのために、置換変数を使用できます。これを行う方法の簡単な例を次に示します (Sql*plus 環境)。

-- set-up table that stores db_links
SQL> create table db_links(
  2    dblink_name varchar2(31)
  3  );

Table created.

--add a test dblink 
SQL> insert into db_links(dblink_name) values ('TEST_DB_LINK');

1 row created.

SQL> commit;

Commit complete.

-- defining of  a substitution variable dblink 
SQL> column dblink_name new_value dblink noprint;

-- the value of the dblink_name column will be placed into the dblink 
-- substitution variable declared previously
SQL> select dblink_name from db_links;

-- now we query a table using db link name stored
-- in the dblink substitution variable
-- prefacing it with ampersand.

SQL> select count(*) from dbusers@&dblink;
old   1: select count(*) from dbusers@&dblink
new   1: select count(*) from dbusers@TEST_DB_LINK

  COUNT(*)                                                                      
----------                                                                      
       351                                                                      

SQL> spool off;
于 2012-11-20T11:05:00.043 に答える