此代码有效。它以您期望的方式运行行计数,我想对它进行周计数,主要是对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从本地表中获取表名,然后使用这些名称来计算这些表中的行,这些表位于远程数据库中。
答案 0 :(得分:1)
猴子在错误的树上,不能吃香蕉。
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.