oracle from节中的变量table_name

unhi4e5o  于 2023-04-29  发布在  Oracle
关注(0)|答案(1)|浏览(175)

我在oracle中创建了循环,因为我想从数据库中的所有表中计数记录。
我的代码有什么问题?

BEGIN
FOR i IN(SELECT table_name
         FROM   all_tables) LOOP
    dbms_output.Put_line(i.table_name);

    FOR j IN(SELECT Count(1) AS counter
             FROM   i.tab_name) LOOP
        dbms_output.Put_line(j.counter);
    END LOOP;
END LOOP;
END;
ftf50wuq

ftf50wuq1#

不能使用变量中的表名。您必须使用动态SQL,例如:

DECLARE
   counter NUMBER;
BEGIN
FOR i IN (SELECT table_name FROM all_tables) LOOP
    dbms_output.Put_line(i.table_name);
    EXECUTE IMMEDIATE 'SELECT Count(1) FROM ' || i.table_name INTO counter;
    dbms_output.Put_line(counter);
END LOOP;
END;

相关问题