Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/12/2009, 16:11
jc3000
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: Privilegio para procedimientos almacenados

No te explicas muy bien.
Si por procedimiento hablas de un " PROCEDURE " y al hablar que tienes empaquetados te refieres a que los tienes en un " PACKAGE " y ese procedure del package lo va a aejecutar otro que no sea su propietario ( me estoy liando ) lo que tienes que hacer es dar un simple GRANT de EXECUTE sobre el PACKAGE ( NO SOBRE EL PROCEDURE DEL PACKAGE ) al usuario que lo va a ejcutar :

GRANT EXECUTE ON << NOMBRE_DEL_PACKAGE >> TO << USUARIO QUE LO VA A EJECUTAR >>

Y para no poner el usuario ( NO TABLESPACE ) por delante cada vez que lo llames, create un sinonimo privado.

Digamos que el propietario del package se llama USER_PROPIETARIO y el que lo va a ejecutar es USER_EJECUTOR.

Tendrías que hacer esto desde el por ejemplo el SQL PLUS :

Desde USER_PROPIETARIO :

GRANT EXCUTE ON << NOMBRE_DEL_PACKAGE >> TO USER_EJECUTOR
/

Desde USER_EJECUTOR ( O un usuario DBA ) :

CREATE SYNONYM USER_EJECUTOR.NOMBRE_DEL_SINONIMO ( GENERALMENTE SE LE LLAMA IGUAL QUE EL OBJETO ORIGINAL ) FOR USER_PROPIETARIO.NOMBRE_DEL_PACKAGE
/

Pues si no me he liado, creo que esto es todo.