oracle - 如何从 PL/SQL 中的表列表中查找空表?

标签 oracle plsql oracle11g

我有一个表格列表,例如 table1、table2、....table35。我需要找到空的。有没有更快的方法来做到这一点?我用谷歌搜索了一些,但所有解决方案都是关于在模式中查找空表的。这次我有一个表名列表,想找空表。有什么建议吗?

最佳答案

从 DBA_OBJECTS 获取所有表并循环:

DECLARE
    v_cnt          NUMBER;
    v_schemaname   VARCHAR(20) := 'myschema';
BEGIN
    FOR i IN (SELECT DISTINCT OWNER, OBJECT_NAME
                FROM DBA_OBJECTS
               WHERE OBJECT_TYPE = 'TABLE' AND OWNER = v_schemaname)
    LOOP
        BEGIN
            EXECUTE IMMEDIATE
                'select count(*) FROM ' || i.owner || '.' || i.object_name || ' WHERE rownum = 1'
                INTO v_cnt;

            IF v_cnt = 0
            THEN
                DBMS_OUTPUT.put_line (
                    i.owner || '.' || i.object_name || ' IS EMPTY');
            END IF;
        EXCEPTION
            WHEN OTHERS
            THEN
                DBMS_OUTPUT.put_line (
                    i.owner || '.' || i.object_name || ' ERROR: ' || SQLCODE);
        END;
    END LOOP;
END;

关于oracle - 如何从 PL/SQL 中的表列表中查找空表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50756841/

相关文章:

java - 您多久编写一次新的 SQL 查询或尝试使用现有的 SQL 查询?

sql - FORALL 与 FOR 批量更新

sql - 在 PL/SQL 中的 With 子句之后使用 for 循环

oracle - 存储过程: Cursor is bad?

oracle - 如何使用 dbms_scheduler 安排工作在特定时间运行

oracle - 删除 Application Express 工作区

regex - 甲骨文,REGEXP_LIKE

python - 使用 sqlalchemy 在加密端口上连接到 Oracle

java - java.sql.Timestamp 时区是特定的吗?

database - 将 xml 嵌套到表中