Sql 如何在数据库链接上运行行计数?
这段代码有效。它以您所期望的方式运行行计数,我想用tweek它,主要是通过db_链接对我认为合适的表进行计数Sql 如何在数据库链接上运行行计数?,sql,database,oracle,plsql,Sql,Database,Oracle,Plsql,这段代码有效。它以您所期望的方式运行行计数,我想用tweek它,主要是通过db_链接对我认为合适的表进行计数 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||' Cou
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从本地表中提取表名,然后使用这些名称来计算这些表中的行,这些行位于远程数据库中。Monkey在错误的树上,不能吃香蕉
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.