0

我有一个要求,我必须从表中选择 DB 链接的名称(有很多 DB 链接)到绑定变量中,然后从所有 DB 链接中可用的表中获取数据,但是数据因使用的 DB 链接而异。我没有得到使用绑定变量值作为数据库链接的解决方案。

这是我的代码:

select将 DB 链接提取到绑定变量的语句

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

请建议我一个解决方案,因为我可以有许多数据库链接,具体取决于用户选择的区域,我将它放入绑定变量中,然后想用它从表中获取数据。

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 回答