Код для выполнения выбора из списка из нескольких Oracle баз данных - PullRequest
0 голосов
/ 27 мая 2020

Требуется ваше или руководство о том, как я могу выполнить выбор в нескольких базах данных, представленных в списке. цель этого кода - запросить несколько удаленных баз данных и вставить результат в текущую базу данных.

Необходимо, чтобы db_link был извлечен из списка или таблицы

insert into xxxx.DB_tracker value(SELECT d.name FROM v$database@**opXXX_du**);

1 Ответ

2 голосов
/ 27 мая 2020

Dynami c SQL.

Предположим, что ссылки базы данных хранятся в таблице link:

SQL> select * From links;

LINK
---------
dbl_ora10
dbl_ora11
dbl_orcl

Затем вы должны использовать al oop, создать оператор insert и выполните его. Поскольку у меня нет этих ссылок на базу данных, я просто показываю операторы на экране. Вы бы раскомментировали строку execute immediate.

SQL> set serveroutput on
SQL> declare
  2    l_str varchar2(200);
  3  begin
  4    for cur_r in (select link from links) loop
  5      l_str := 'insert into db_tracker ' ||
  6               'select name from v$database@' || cur_r.link;
  7      dbms_output.put_line(l_str);
  8
  9      -- execute immediate l_str;
 10    end loop;
 11  end;
 12  /
insert into db_tracker select name from v$database@dbl_ora10
insert into db_tracker select name from v$database@dbl_ora11
insert into db_tracker select name from v$database@dbl_orcl

PL/SQL procedure successfully completed.

SQL>

Если вы хотите на самом деле выбрать name и отобразить его на экране, вам понадобится предложение into. Примерно так:

SQL> set serveroutput on
SQL>
SQL> declare
  2    l_name varchar2(30);
  3  begin
  4    for cur_r in (select link from links) loop
  5      execute immediate 'select name from v$database@' || cur_r.link
  6        into l_name;
  7      dbms_output.put_line(l_name);
  8    end loop;
  9  end;
 10  /
XE

PL/SQL procedure successfully completed.

SQL>
...