我有一个要求,我必须从表中选择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
请建议我一个解决方案,因为根据USER选择的区域我可能有很多数据库链接我将它放入绑定变量然后想用它来从表中获取数据。
答案 0 :(得分: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;