Oracle
 sql >> база данни >  >> RDS >> Oracle

dbms_metadata.get_ddl не работи

От dbms_metadata документация:

Ако на непривилегированите потребители се предостави някаква форма на достъп до обект в схемата на някой друг, те ще могат да извлекат спецификацията за предоставяне чрез API за метаданни, но не и действителните метаданни на обекта.

Така че освен ако не сте свързани като привилегирован потребител, не можете да видите DDL за обекти на друг потребител. Ще трябва да се свържете като SYS , или да имате SELECT_CATALOG_ROLE роля, предоставена на вашия потребител, за да може да получи дефиницията на обекта на XT.

Дори и с тази роля:

В съхранените процедури, функции и пакети с права за дефиниране ролите (като SELECT_CATALOG_ROLE) са забранени. Следователно, такава PL/SQL програма може да извлича само метаданни за обекти в собствената си схема. Ако искате да напишете PL/SQL програма, която извлича метаданни за обекти в различна схема (въз основа на притежаването на SELECT_CATALOG_ROLE от извикващия), трябва да направите програмата invokers-rights.

Ако се обаждате на dbms_metadata от анонимен PL/SQL блок, който няма значение, но ако го извиквате от процедура, ще трябва да включите AUTHID клауза в декларацията на процедурата, добавяйки 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. Perl DBI - стартирайте SQL скрипт с множество изрази

  2. Как да предвидим и избягаме от единични кавички ' в Oracle

  3. 2PL, строг срещу строг модел, има ли полза?

  4. ORA-30926:не може да се получи стабилен набор от редове в изходните таблици

  5. Доставчикът на OraOLEDB в .NET ненадежден ли е в CLOB полета?