Как запустить подсчет строк по ссылке в базе данных? - PullRequest
0 голосов
/ 01 марта 2019

Этот код работает.Он запускает подсчет строк так, как вы ожидаете, я хочу настроить его, в основном для подсчета по db_link для таблиц, которые я считаю нужным.

declare
n number;
begin
for i in (select table_name from user_tables) loop
execute immediate' select count(*) from '||i.table_name into n;
dbms_output.put_line('Table Name: '||i.table_name||' Count of Row''s: '||n);
end loop;
end;
/

Итак, это адаптированный код... включает в себя переменную с именем ссылки.(Ссылка работает нормально) Но как ссылаться, это, вероятно, где я отклеиваюсь.

declare
l_dblink varchar2(100) := 'DB1';
n number;
begin
for i in (select table_name from my_tables) loop
execute immediate' select count(*) from '||i.table_name@||l_dblink into n;
dbms_output.put_line('Table Name: '||i.table_name||' Count of Row''s: '||n);
end loop;
end;
/

Может кто-нибудь, пожалуйста, посмотрите и скажите мне, где я иду не так?Я просто хочу, чтобы SQL выбирал имена таблиц из локальной таблицы, а затем использовал имена для подсчета строк в этих таблицах, которые находятся в удаленной базе данных.

1 Ответ

0 голосов
/ 01 марта 2019

Обезьяна не на том дереве и не может съесть банан.

SQL> create table my_tables (table_name varchar2(20));

Table created.

SQL> insert into my_tables values ('dual');

1 row created.

SQL> set serveroutput on
SQL> declare
  2    l_dblink varchar2(100) := 'db1';
  3    n number;
  4  begin
  5    for i in (select table_name from my_tables)          --  has to be like this
  6    loop                                                 --      vvv
  7      execute immediate' select count(*) from '||i.table_name || '@' || l_dblink into n;
  8      dbms_output.put_line('Table Name: '||i.table_name||' Count of Row''s: '||n);
  9    end loop;
 10  end;
 11  /
Table Name: dual Count of Row's: 1

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