Entradas

Mostrando entradas de octubre, 2012

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