在oracle apex中使用dblink时遇到问题。我已经创建了3个指向3个不同远程数据库的Dblink,DBLINKS
现在,我想从dblinks中级联下面的LOV。因此,查询中作为dblink名称写的应该是变量。Query for LOV
谢谢。
答案 0 :(得分:1)
假设您用于选择数据库的项目名为P1_DATABASE
,其来源为
select database_name d, database_id r
from list_of_databases
order by database_id;
并返回
DBLINK1, 1
DBLINK2, 2
DBLINK3, 3
作为显示/返回值。
创建一个利用UNION
的LoV,例如
select role d, role r
from dba_roles@dblink1
where :P1_DATABASE = 1
union all
select role d, role r
from dba_roles@dblink2
where :P1_DATABASE = 2
union all
select role d, role r
from dba_roles@dblink3
where :P1_DATABASE = 3;
表示:如果选择dblink1
,则其返回值为1
,因此第一个SELECT
将返回一些值,而第二和第三则不会。您选择的其他选项也是如此。
这是一般想法;如有必要,对其进行修改。
答案 1 :(得分:0)
使用“返回SQL查询的PL / SQL函数体”,然后可以在plsql中根据输入来构建所需的特定对象。
沿着这条线>
declare
v_sql varchar2(2000) := '';
begin
if ( :P1_DATABASE = 1 ) then
v_sql := 'select blah from blah@db1';
elsif ( :P1_DATABASE = 2 ) then
v_sql := 'select blah from blah@db2';
elsif ( :P1_DATABASE = 3 ) then
v_sql := 'select blah from blah@db3';
end if;
return v_sql;
end;