Bạn muốn chỉ định từ khóa NOCYCLE sau khi CONNECT BY:
tức là
SELECT NAME,
TYPE,
REFERENCED_NAME,
REFERENCED_TYPE
FROM DBA_DEPENDENCIES
WHERE OWNER='FOO'
AND NAME='VIEW_01'
CONNECT BY NOCYCLE
PRIOR REFERENCED_NAME = NAME;
Có thêm thông tin về NOCYCLE và từ khóa "CONNECT_BY_ISCYCLE" tại đây: http://www.dba -oracle.com/t_advanced_sql_connect_by_loop.htm
và tại đây: http://download.oracle. com / docs / cd / B19306_01 / server.102 / b14200 / pseudocolumns001.htm
Hy vọng nó sẽ giúp ...
CHỈNH SỬA:Sau khi nhận xét, bạn đã bỏ qua điều khoản BẮT ĐẦU VỚI.
SELECT NAME,
TYPE,
REFERENCED_NAME,
REFERENCED_TYPE
FROM DBA_DEPENDENCIES
WHERE OWNER='FOO'
START WITH NAME='VIEW_01'
CONNECT BY NOCYCLE
PRIOR REFERENCED_NAME = NAME;
BTW, giữ OWNER ='FOO' trong đó mệnh đề giới hạn bất kỳ phần phụ thuộc nào được trả về chỉ đối tượng của FOO, do đó bạn có thể bỏ lỡ các phần phụ thuộc từ các lược đồ khác.
Chỉnh sửa 2:Khóa chính của một bảng xem là chủ sở hữu, tên do đó lựa chọn phải bắt đầu bằng cả hai và kết nối bằng cả hai. Bạn có thể sử dụng nơi để lọc ra các kết quả mong muốn.
SELECT OWNER, NAME, TYPE,
REFERENCED_OWNER,
REFERENCED_NAME,
REFERENCED_TYPE
FROM DBA_DEPENDENCIES
-- where referenced_type='TABLE'
START WITH owner = 'FOO' AND NAME='VIEW_01'
CONNECT BY NOCYCLE
PRIOR REFERENCED_NAME = NAME
AND PRIOR REFERENCED_OWNER = OWNER;