Desde el dbms_metadata
documentación:
Si a los usuarios sin privilegios se les otorga alguna forma de acceso a un objeto en el esquema de otra persona, podrán recuperar la especificación de concesión a través de la API de metadatos, pero no los metadatos reales del objeto.
Entonces, a menos que esté conectado como un usuario privilegiado, no puede ver el DDL para los objetos de otro usuario. Tendrías que conectarte como SYS
, o tener el SELECT_CATALOG_ROLE
rol otorgado a su usuario para poder obtener la definición de objeto de XT.
Incluso con ese rol:
En los paquetes de procedimientos almacenados, funciones y derechos de definición, los roles (como SELECT_CATALOG_ROLE) están deshabilitados. Por lo tanto, dicho programa PL/SQL solo puede obtener metadatos para objetos en su propio esquema. Si desea escribir un programa PL/SQL que obtenga metadatos para objetos en un esquema diferente (basado en la posesión de SELECT_CATALOG_ROLE por parte del invocador), debe crear el programa invocadores-derechos.
Si está llamando a dbms_metadata
desde un bloque PL/SQL anónimo que no importa, pero si lo llama desde un procedimiento, deberá incluir un AUTHID
cláusula en la declaración del procedimiento, agregando AUTHID CURRENT_USER
.