Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在数据库链接上运行行计数?_Sql_Database_Oracle_Plsql - Fatal编程技术网

Sql 如何在数据库链接上运行行计数?

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

这段代码有效。它以您所期望的方式运行行计数,我想用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||' 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.