Do
dbms_metadata
documentação:
Se os usuários sem privilégios receberem alguma forma de acesso a um objeto no esquema de outra pessoa, eles poderão recuperar a especificação de concessão por meio da API de metadados, mas não os metadados reais do objeto.
Portanto, a menos que você esteja conectado como um usuário privilegiado, não poderá ver o DDL dos objetos de outro usuário. Você precisaria se conectar como
SYS
, ou tenha o SELECT_CATALOG_ROLE
role concedido ao seu usuário para poder obter a definição de objeto do XT. Mesmo com esse papel:
Em procedimentos armazenados, funções e pacotes de direitos de definição, as funções (como SELECT_CATALOG_ROLE) são desabilitadas. Portanto, esse programa PL/SQL só pode buscar metadados para objetos em seu próprio esquema. Se você quiser escrever um programa PL/SQL que busque metadados para objetos em um esquema diferente (com base na posse de SELECT_CATALOG_ROLE do invocador), você deve criar o programa invokers-rights.
Se você estiver chamando
dbms_metadata
de um bloco PL/SQL anônimo que não importa, mas se você estiver chamando de um procedimento, você terá que incluir um AUTHID
cláusula na declaração do procedimento, adicionando AUTHID CURRENT_USER
.