0

私は少し立ち往生しています。データベース名のリストを含むテーブルがあります。データベース名を照会してから、このデータベースに照会して、「システムテーブル」から詳細を返したいと考えています。私は2つのカーソルを使用しようとしましたが、うまくいきません(構文が見つからないだけです)。ポインター/ヘルプをいただければ幸いです。

declare

  cursor c_dbNames is select dbname
                  from DB_INFO order by name ASC;
  v_curr_dbname VARCHAR2(60);

begin

  open c_dbNames;
  LOOP
      FETCH c_dbNames into v_curr_dbname;
      EXIT WHEN c_dbnames%NOTFOUND;
      begin
          cursor c_dbDetails is select value
                    from SYSTEMTABLE@'||v_curr_dbname||' order by name ASC;
          v_curr_detail  VARCHAR2(60);

          open c_dbDetails;
            LOOP
                FETCH c_dbDetails into v_curr_detail;
                EXIT WHEN c_dbDetails%NOTFOUND;
                htp.p('<tr><th>'||v_curr_detail||'</th></tr>');
            END LOOP;
          close c_dbDetails;
      end;
  END LOOP;
  close c_dbnames;

end;
4

2 に答える 2

0
declare
  cursor databases_c is
    -- put your database links here
    select 'XXX' as dbname from dual union
    select 'YYY' from dual;
  v_global_name varchar2(4000);
begin
  for v_dbname in databases_c loop
    -- query the database details
    execute immediate
      'select global_name from global_name@' || v_dbname.dbname
      into v_global_name;
    dbms_output.put_line(v_global_name);
  end loop;
end;
/

出力:

SQL> @so27.sql
XXX
YYY

PL/SQL procedure successfully completed.

SQL>
于 2013-08-16T05:19:17.437 に答える