我想要符合特定名稱條件的所有表中的記錄數。這裏是我建對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