2012-11-20 4 views
0

바인드 변수에 테이블의 DB 링크 이름 (많은 DB 링크가 있음)을 선택하고 모든 DB 링크에서 사용할 수있는 테이블의 데이터를 반입해야한다는 요구 사항이 있습니다. 사용 된 DB 링크에 따라 다릅니다. 바인드 변수 값을 DB 링크로 사용하는 솔루션을 얻지 못하고 있습니다. 그리고 내가 시도오라클의 바인드 변수 연결

SELECT reagion_id, region_name from [email protected]:v_db_link 

테이블에서 데이터를 가져 오는을 위해 그것을 사용할 필요가 바인드 변수

SELECT DB_LINK into :v_db_link from reagions_db_links; 

에 DB 링크를 페치

select 문 :

내 코드입니다 그러나 아래처럼 연결하면 작동하지 않습니다.

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

사용자가 선택한 영역에 따라 많은 DB 링크를 가질 수 있으므로 솔루션을 제안하십시오. 바인드 변수에 넣은 다음 테이블에서 데이터를 가져 오는 데 사용하려고합니다.

답변

1

대체 변수를 사용할 수 있습니다. 다음은이를 수행하는 방법에 대한 간단한 예입니다. (Sql * plus environment).

-- 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;