這是一個棘手的問題。你無法加入到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'選擇計數(*)「。 –