这是一个棘手的问题。你无法加入到select count(*) from view_X
或类似的东西,使用直接的SQL,所以我能想到的最好的事情是一个函数,它接受一个视图名称并返回其数:
CREATE OR REPLACE FUNCTION ViewRowCount(viewName VARCHAR2) RETURN NUMBER
AS
rowCount NUMBER := 0;
BEGIN
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || viewName INTO rowCount;
RETURN rowCount;
END;
/
一旦该功能到位BTW
SELECT DISTINCT OWNER,
OBJECT_NAME,
ViewRowCount(OBJECT_NAME)
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'VIEW'
AND OWNER = 'ADMIN';
,我不认为你需要的DISTINCT
此查询,但我不会有今天DBA访问这样做,我不能肯定的:你可以从你的查询调用它。记录计数将会很慢,因此如果在使用DISTINCT
进行过滤之前存在重复记录,则每个重复记录行都会有一个计数,从而使计数更慢。
另外看看Rachcha的解决方案,它不需要像我一样创建一个新的对象(函数)。如果您要从前端调用,则需要使用类似于我的答案的东西,但如果您要从SQL * Plus调用,Rachcha的工作将会非常顺利。
你想知道一个视图将有多少行返回或有多少行,在每个(或全部)基表? '每个对应表中有多少记录/行'。不对应''从view_X'选择计数(*)“。 –