Cita:
Iniciado por gnzsoloyo Empecemos por el principio: ¿Para que necesitas acceder a esa tabla desde un procedimiento?
Sucede que estoy trabajando con la vista
sys.all_objects para listar todos los objetos de la BD asociados a una conexión (este listado se volcará hacia la grilla de una aplicación). A su vez, el listado permitirá ser filtrado por 3 campos (owner, object_type y object_name). Los 2 primeros filtros irán en combos, donde la lista de owners la he obtenido a partir de la siguiente select hacia la misma vista:
Código SQL:
Ver originalPROCEDURE pr_ListOwner
(
pCursor OUT sys_refcursor
)
AS
BEGIN
OPEN pCursor FOR
SELECT DISTINCT
a.owner
FROM all_objects a
ORDER BY owner ASC;
exception
WHEN others THEN
raise_application_error(sqlcode, sqlerrm);
END;
Como puedes ver, los owner los obtengo desde la misma vista que contiene los objetos, pero investigando un poco encontré que podía reemplazar por:
Código SQL:
Ver originalPROCEDURE pr_ListOwner
(
pCursor OUT sys_refcursor
)
AS
BEGIN
OPEN pCursor FOR
SELECT
a.username
FROM dba_users a
ORDER BY username ASC;
exception
WHEN others THEN
raise_application_error(sqlcode, sqlerrm);
END;
Pero es aquí donde no me permite acceder a la vista
dba_users desde el interior del procedimiento del package.
La lista de
object_type la obtengo de manera análoga con una select hacia la misma vista:
Código SQL:
Ver originalPROCEDURE pr_ListObjectType
(
pCursor OUT sys_refcursor
)
AS
BEGIN
OPEN pCursor FOR
SELECT DISTINCT
a.object_type
FROM all_objects a
ORDER BY a.object_type ASC;
exception
WHEN others THEN
raise_application_error(sqlcode, sqlerrm);
END;
Para esta si no he encontrado una vista para reemplazarla sin utilizar la vista
all_objects, pero de momento va bien, el problema es con el stored anterior que deseo reemplazar para volcar los owners hacia la aplicación pero accediendo a la vista
dba_users.