DBLINK Имя как переменная оракул - PullRequest
0 голосов
/ 24 ноября 2018

У меня была проблема при использовании dblink в oracle apex.Я создал 3 Dblinks для 3 разных удаленных баз данных, DBLINKS

Теперь я хочу, чтобы нижеследующие LOV каскадно касались dblinks.Итак, что следует записать в запросе в качестве имени dblink - это переменная. Запрос на LOV

Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Используйте «Тело функции PL / SQL, возвращающее 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;

enter image description here

0 голосов
/ 24 ноября 2018

Предположим, что элемент, который вы используете для выбора базы данных , имеет имя 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 вернет некоторые значения, а 2 и 3 - нет.То же самое касается других вариантов, которые вы выбираете.

Это общая идея;при необходимости измените его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...