sql >> Databáze >  >> RDS >> Oracle

dbms_metadata.get_ddl nefunguje

Z dbms_metadata dokumentace:

Pokud je neprivilegovaným uživatelům udělena nějaká forma přístupu k objektu ve schématu někoho jiného, ​​budou moci načíst specifikaci udělení prostřednictvím rozhraní Metadata API, ale nikoli skutečná metadata objektu.

Takže pokud nejste připojeni jako privilegovaný uživatel, nemůžete vidět DDL pro objekty jiného uživatele. Budete se muset připojit jako SYS nebo mít SELECT_CATALOG_ROLE role udělená vašemu uživateli, aby mohl získat definici objektu XT.

I s tou rolí:

V uložených procedurách, funkcích a balíčcích s právy definujících jsou role (například SELECT_CATALOG_ROLE) zakázány. Proto takový PL/SQL program může načítat pouze metadata pro objekty ve svém vlastním schématu. Pokud chcete napsat program PL/SQL, který načte metadata pro objekty v jiném schématu (na základě toho, že vyvolávač má SELECT_CATALOG_ROLE), musíte programu udělit práva vyvolávače.

Pokud voláte dbms_metadata z anonymního bloku PL/SQL, na kterém nezáleží, ale pokud jej voláte z procedury, budete muset zahrnout AUTHID klauzule v deklaraci procedury přidáním AUTHID CURRENT_USER .



  1. Nelze vložit Unicode pomocí cx-Oracle

  2. SQLite GLOB

  3. Jaký je nejlepší způsob zobrazení obrázku z databáze serveru SQL v asp.net?

  4. Jak SLEEP() funguje v MariaDB