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

dbms_metadata.get_ddl tidak berfungsi

Dari dbms_metadata dokumentasi:

Jika pengguna yang tidak memiliki hak istimewa diberikan beberapa bentuk akses ke objek dalam skema orang lain, mereka akan dapat mengambil spesifikasi pemberian melalui Metadata API, tetapi bukan metadata objek yang sebenarnya.

Jadi, kecuali Anda terhubung sebagai pengguna yang memiliki hak istimewa, Anda tidak dapat melihat DDL untuk objek pengguna lain. Anda harus terhubung sebagai SYS , atau minta SELECT_CATALOG_ROLE peran yang diberikan kepada pengguna Anda untuk bisa mendapatkan definisi objek XT.

Bahkan dengan peran itu:

Dalam prosedur tersimpan, fungsi, dan paket hak-pendefinisi, peran (seperti SELECT_CATALOG_ROLE) dinonaktifkan. Oleh karena itu, program PL/SQL seperti itu hanya dapat mengambil metadata untuk objek dalam skemanya sendiri. Jika Anda ingin menulis program PL/SQL yang mengambil metadata untuk objek dalam skema yang berbeda (berdasarkan kepemilikan SELECT_CATALOG_ROLE oleh pemanggil), Anda harus membuat program ini sebagai hak-hak.

Jika Anda memanggil dbms_metadata dari blok PL/SQL anonim yang tidak masalah, tetapi jika Anda memanggilnya dari prosedur, Anda harus menyertakan AUTHID klausa dalam deklarasi prosedur, menambahkan AUTHID CURRENT_USER .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RDLC LocalReport Ekspor ke Excel sangat lambat

  2. Bagaimana cara menambahkan angka nol di depan dalam kueri Oracle SQL?

  3. RMAN Daftar perintah cadangan

  4. Tambahkan 2 bulan ke stempel waktu saat ini

  5. Ekspor Hasil Permintaan Oracle ke File HTML saat menggunakan SQLcl