首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBLINK名称作为变量oracle

DBLINK名称作为变量oracle
EN

Stack Overflow用户
提问于 2018-11-24 03:29:47
回答 2查看 275关注 0票数 0

在甲骨文中使用dblink时,我遇到了问题。我创建了3个指向3个不同远程数据库的Dblinks,DBLINKS

现在,我希望下面的LOV是从dblink级联的。那么,在查询中写入dblink的名称应该是一个变量。LOV查询

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-24 13:03:48

假设用于选择数据库的项名为P1_DATABASE,其源是

代码语言:javascript
复制
select database_name d, database_id r
from list_of_databases
order by database_id;

和回报

代码语言:javascript
复制
DBLINK1, 1
DBLINK2, 2
DBLINK3, 3

作为显示/返回值。

创建一个利用LoV的UNION,如

代码语言:javascript
复制
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不会返回一些值。

这是总的想法,必要时修改它。

票数 1
EN

Stack Overflow用户

发布于 2018-11-25 03:56:16

使用"PL/SQL函数体返回SQL查询“,然后在plsql中可以根据输入构建所需的特定查询。

沿着this>的路线

代码语言:javascript
复制
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;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53454923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档