En realidad me han surgido varias dudas. Tengo un procedimiento dentro de un package:
Código SQL:
Ver original
CREATE OR REPLACE package body SLEG.PQ_Cartas_Mantenimiento AS PROCEDURE pr_Verif_Provi_Detalle_Generar ( pUsername varchar2 := USER ) AS -- Variables aquí BEGIN -- Proceso aquí (Selects, Inserts, Updates y Deletes) exception WHEN others THEN ROLLBACK; raise; END; END;
Como pueden ver el paquete pertenece al esquema SLEG y las tablas involucradas en el proceso también pertenecen a dicho esquema.
El procedimiento será ejecutado por otro usuario USRSLEG, para ello, se le ha otorgado privilegio de ejecución de package.
Código SQL:
Ver original
GRANT EXECUTE ON SLEG.PQ_Cartas_Mantenimiento TO USRSLEG;
Aquí surge mi primera duda. No ha sido necesario otorgar privilegios de select, insert, update y delete al usuario USRSLEG sobre las tablas involucradas, bastó con el privilegio de ejecución de paquete, esto no es lo que yo me esperaba, ya que suponía que el motor de Oracle iba a exigir los demás privilegios, sin embargo, por seguridad he agregado los privilegios mencionados para que cuando se haga el pase a producción no surgan inconvenientes.
En producción se ha presentado el siguiente error cuando una aplicación ejecuta el procedure (utilizando el usuario USRSLEG)
Código SQL:
Ver original
ORA-06550: line 1, COLUMN 12: PLS-00904: insufficient privilege TO access object SLEG.PQ_CARTAS_MANTENIMIENTO ORA-06550: line 1, COLUMN 7: PL/SQL: Statement ignored
De momento no he logrado replicar en desarrollo el problema. Favor su apoyo, no encuentro la fuente del problema.
Muchas gracias, saludos cordiales.