2012-11-20 104 views
0

我有一個要求,我必須從表中選擇DB鏈接的名稱(有很多DB鏈接)到綁定變量,然後從所有DB鏈接中可用的表中獲取數據,但數據根據使用的DB鏈接而不同。我沒有得到使用綁定變量值作爲數據庫鏈接的解決方案。在oracle中連接綁定變量

這是我的代碼:

select語句獲取數據庫鏈接到綁定變量

SELECT DB_LINK into :v_db_link from reagions_db_links; 

然後,我不得不使用它從表中讀取數據

SELECT reagion_id, region_name from [email protected]:v_db_link 

我曾嘗試連接像下面那樣然而它不工作

SELECT reagion_id, region_name from [email protected]||:v_db_link 

請給我一個解決方案,因爲我可以有很多DB鏈接,取決於用戶選擇的區域我將它放入綁定變量,然後想用它從表中獲取數據。

回答

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 [email protected]&dblink; 
old 1: select count(*) from [email protected]&dblink 
new 1: select count(*) from [email protected]_DB_LINK 

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

SQL> spool off;