sql >> Database teknologi >  >> RDS >> Oracle

dbms_metadata.get_ddl virker ikke

Fra dbms_metadata dokumentation:

Hvis ikke-privilegerede brugere får en eller anden form for adgang til et objekt i en andens skema, vil de være i stand til at hente tildelingsspecifikationen gennem Metadata API, men ikke objektets faktiske metadata.

Så medmindre du er tilsluttet som en privilegeret bruger, kan du ikke se DDL for en anden brugers objekter. Du skal oprette forbindelse som SYS , eller har SELECT_CATALOG_ROLE rolle givet til din bruger for at kunne få XT's objektdefinition.

Selv med den rolle:

I lagrede procedurer, funktioner og definers-rights-pakker er roller (såsom SELECT_CATALOG_ROLE) deaktiveret. Derfor kan et sådant PL/SQL-program kun hente metadata for objekter i sit eget skema. Hvis du vil skrive et PL/SQL-program, der henter metadata for objekter i et andet skema (baseret på invokerens besiddelse af SELECT_CATALOG_ROLE), skal du lave programmet invokers-rettigheder.

Hvis du kalder dbms_metadata fra en anonym PL/SQL-blok, der er ligegyldigt, men hvis du kalder den fra en procedure, skal du inkludere en AUTHID klausul i procedureerklæringen, tilføjelse af AUTHID CURRENT_USER .



  1. Oracle 11g:Standard til statisk værdi, når forespørgslen ikke returnerer noget

  2. Returner rækker i den nøjagtige rækkefølge, de blev indsat

  3. Sådan aktiverer du Change Data Capture (CDC) på hele tabellen ELLER Aktiverer CDC på bordet med liste over kolonner i SQL Server

  4. Oracle pl-sql escape-tegn (for en ' )