Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/02/2015, 17:53
eduar2083
 
Fecha de Ingreso: octubre-2014
Ubicación: Lima
Mensajes: 74
Antigüedad: 10 años, 1 mes
Puntos: 1
ORA-06550 PLS-00904 ¿Error de privilegio?

Buenas,
En realidad me han surgido varias dudas. Tengo un procedimiento dentro de un package:

Código SQL:
Ver original
  1. CREATE OR REPLACE package body SLEG.PQ_Cartas_Mantenimiento
  2. AS
  3.     PROCEDURE pr_Verif_Provi_Detalle_Generar
  4.     (
  5.         pUsername varchar2 := USER
  6.     )
  7.     AS
  8.         -- Variables aquí
  9.     BEGIN
  10.         -- Proceso aquí (Selects, Inserts, Updates y Deletes)
  11.     exception
  12.         WHEN others THEN
  13.             ROLLBACK;
  14.             raise;
  15.     END;
  16. 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
  1. 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
  1. ORA-06550: line 1, COLUMN 12:
  2. PLS-00904: insufficient privilege TO access object SLEG.PQ_CARTAS_MANTENIMIENTO
  3. ORA-06550: line 1, COLUMN 7:
  4. 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.