Quiero el número de registros en todas las tablas que coinciden con un criterio de nombre específico. Aquí está el SQL he construidoEjecutar para cada tabla en PLSQL
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;
/
pero me da el siguiente error:
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.
¿Cómo modifico este modo que se ejecuta para todas las tablas a juego?
Actualización:
Sobre la base de una respuesta recibida, He intentado lo siguiente pero no se consigue nada en el 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;
/
Asegúrese de no tener punto y coma al final de su declaración dinámica. Execute inmediato devolverá un error si lo tiene allí. –
¿Tiene habilitada la salida de dmbs? Es posible que deba hacer eso primero para ver su resultado. –