发布于 2018-11-24 13:03:48
假设用于选择数据库的项名为P1_DATABASE,其源是
select database_name d, database_id r
from list_of_databases
order by database_id;和回报
DBLINK1, 1
DBLINK2, 2
DBLINK3, 3作为显示/返回值。
创建一个利用LoV的UNION,如
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将返回一些值,而第二个和第三个SELECT不会返回一些值。
这是总的想法,必要时修改它。
发布于 2018-11-25 03:56:16
使用"PL/SQL函数体返回SQL查询“,然后在plsql中可以根据输入构建所需的特定查询。
沿着this>的路线
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;

https://stackoverflow.com/questions/53454923
复制相似问题