Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Buat daftar secara rekursif dari tampilan DBA_DEPENDENCIES Oracle

Anda ingin menentukan kata kunci NOCYCLE setelah CONNECT BY Anda:

yaitu

SELECT NAME, 
       TYPE, 
       REFERENCED_NAME, 
       REFERENCED_TYPE 
  FROM DBA_DEPENDENCIES 
 WHERE OWNER='FOO' 
   AND NAME='VIEW_01' 
CONNECT BY NOCYCLE
  PRIOR REFERENCED_NAME = NAME;

Ada info lebih lanjut tentang NOCYCLE dan kata kunci "CONNECT_BY_ISCYCLE" di sini:http://www.dba -oracle.com/t_advanced_sql_connect_by_loop.htm

dan di sini:http://download.Oracle. com/docs/cd/B19306_01/server.102/b14200/pseudocolumns001.htm

Semoga membantu...

EDIT:Setelah komentar, Anda melewatkan klausa MULAI DENGAN.

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, pertahankan OWNER='FOO' di mana klausa membatasi semua dependensi yang dikembalikan hanya ke objek FOO sehingga Anda mungkin kehilangan dependensi dari skema lain.

Sunting 2:Kunci utama dari tabel tampilan adalah pemilik, nama sehingga pilih harus dimulai dengan keduanya dan dihubungkan oleh keduanya. Anda dapat menggunakan tempat untuk memfilter hasil yang diinginkan.

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mendapatkan daftar semua tampilan terwujud di oracle

  2. Nama ORA-00955 sudah digunakan oleh objek yang ada

  3. Menghapus baris dari tabel induk dan anak

  4. Menerapkan SCD Tipe 2 di Oracle

  5. cara membuat rencana penjelasan untuk seluruh prosedur tersimpan