Führen Sie Für Jede Tabelle in PLSQL

Möchte ich die Anzahl der Datensätze in allen Tabellen mit einem bestimmten Namen Kriterien. Hier ist die SQL, die ich gebaut

Declare SQLStatement VARCHAR (8000) :='';
BEGIN
  SELECT 'SELECT COUNT (*) FROM ' || Table_Name || ';'
  INTO SQLStatement
  FROM All_Tables
  WHERE 1=1
    AND UPPER (Table_Name) LIKE UPPER ('MSRS%');

  IF SQLStatement <> '' THEN
    EXECUTE IMMEDIATE SQLStatement;
  END IF;
END;
/

Aber ich bekomme die folgende Fehlermeldung:

Error at line 1
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at line 3
Script Terminated on line 1.

Wie kann ich ändern, damit es läuft für alle passenden Tabellen?

Update:

Basierend auf eine Antwort erhielt, ich habe Folgendes versucht, aber ich bekomme nicht alles in den DBMS_OUTPUT

declare 
  cnt number;
begin
  for r in (select table_name from all_tables) loop
    dbms_output.put_line('select count(*) from CDR.' || r.table_name);
  end loop;
end;
/
Stellen Sie sicher, dass Sie nicht haben Semikolon am Ende der Anweisung dynamic. Execute immediate einen Fehler zurück, wenn Sie es haben.
Haben Sie DBMS-Ausgang aktiviert? Vielleicht müssen Sie zuerst tun, um zu sehen, Ihren Ausgang.

InformationsquelleAutor Raj More | 2011-02-28

Schreibe einen Kommentar