我有一个表格列表,例如 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/