【问题标题】:How do I run a count of rows over a database link?如何在数据库链接上运行行数?
【发布时间】:2019-03-01 05:28:52
【问题描述】:

此代码有效。它以您期望的方式运行行数,我想对其进行调整,主要是对我认为合适的表的 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 从本地表中提取表名,然后使用这些名称来计算这些表中的行数,这些表驻留在远程数据库中。

【问题讨论】:

    标签: sql database oracle plsql


    【解决方案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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-13
      • 2013-03-29
      • 2016-10-08
      • 2021-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多