我想要符合特定名称条件的所有表中的记录数。这里是我建对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;
/
的SQL,但我得到了以下错误:
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.
如何修改这一点,以便它运行所有匹配的表?
更新:
根据收到的答复,我试过以下,但如果你从all_tables
你不能选择我不会在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;
/
确保您的动态声明末尾没有分号。如果你有它立即执行立即将返回一个错误。 – 2011-02-28 14:09:47
您是否启用了dmbs输出?可能需要先做这件事才能看到你的输出。 – 2011-02-28 14:10:55