ORACLE: ejecutar procedimiento y paquetes con el usuario actual
Si creamos un procedimiento o paquete con un usuario (UsuarioDueno), y le damos permisos de ejecución a otros (UsuarioAutorizado), el procedimiento se ejecuta por defecto como si lo ejecutase el UsuarioDueño. Ej, supongamos que tenemos un procedimiento que cuenta las tablas del usuario ( select count(*) from user_tables ) y nos devuelve un número: create or replace function cuenta return integer is salida integer; begin execute immediate 'select count(*) from user_tables' into salida; return salida; end; / Y le damos permisos de ejecucion a UsuarioAutorizado: grant execute on cuenta to UsuarioAutorizado; Si ejecutamos el procedimiento: set serveroutput on; declare tablas integer; begin tablas := cuenta(); dbms_output.put_line(tablas); end; / Tanto si lo hacemos como UsuarioDueno como UsuarioAutorizado nos saldrá el mismo número de tablas. Esto es a que siempre se accede a UsuarioDueno.user_tables , cuando lo que en realidad queremo